Membuat API Menggunakan Laravel [Bagian 1]

Rahmat Awaludin 18 Juli 2016

Membuat API Menggunakan Laravel [Bagian 1]

Note: Artikel ini mengasumsikan pembaca sudah memahami alur web development dengan Laravel. Jika kepala terasa pusing dan bingung sedang membaca apa, sebaiknya baca aja dulu sampai selesai, ngga usah dipraktekan. Cek link bahan bacaan dibagian akhir tulisan.

Membuat API, kini sudah menjadi salah satu skill wajib buat seorang web developer. Bagaimana tidak, dari smart phone sampai lampu rumah (baca: IoT) sekarang sudah "membutuhkan" API agar lebih "cerdas". Banyak bahasa pemrograman yang bisa digunakan untuk membuat API. Tapi, karena saya seorang Web Developer dengan skillset di Laravel, mari kita buat API ini dengan framework Laravel.

Pada tutorial ini, kita akan membangun sebuah API untuk mengkses data hotel. Mari kita namakan aplikasi yang akan kita bangun sebagai Travelia. Tutorial ini akan dibuat berseri. Pada bagian pertama ini, kita akan menyiapkan project dan sedikit teori tentang API. Selamat membaca!

Persiapan Project

Silahkan buat dulu aplikasi Laravel baru dengan perintah:

composer create-project laravel/laravel travelia

Pada saat tutorial ini ditulis, saya menggunakan Laravel versi 5.2.39. Silahkan samakan versinya dengan menambahkan laravel/laravel=5.2.39 jika khawatir mengalami error karena berbeda versi.

Setelah siap, silahkan konfigurasi database. Untuk memudahkan proses development, kita akan menjalankan Laravel dengan:

php artisan serve

Pada Travelia, struktur table hotels akan seperti berikut:

Screen Shot 2016-07-18 at 16.50.48

Untuk membuat table ini, kita akan menggunakan migration. Mari kita buat model Hotel berikut migrationnya dengan perintah:

php artisan make:model Hotel -m

Pada migration yang dihasilkan, isi method up dengan:

public function up()
{
  Schema::create('hotels', function (Blueprint $table) {
    $table->increments('id');
    $table->string('name');
    $table->string('city');
    $table->string('address');
    $table->string('country');
    $table->string('phone');
    $table->string('email');
    $table->string('website');
    $table->decimal('latitude', 16, 6);
    $table->decimal('longitude', 15, 6);
    $table->timestamps();
  });
}

Kita aktifkan mass assignment untuk tiap field yang dibuat pada model Hotel:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Hotel extends Model { protected $fillable = ['name', 'city', 'address', 'country', 'phone', 'email', 'website', 'latitude', 'longitude']; }

Jalankan migration dengan perintah:

php artisan migrate

Pastikan table hotels sudah muncul di database.

Baca juga: MalesCast, Screencast Untuk Programmer Males

Data Sample

Dalam mengembangkan API, bahkan web development secara umum, penggunaan sample data akan sangat memudahkan proses pengembangan aplikasi. Untuk pengembangan API, sample data akan memudahkan kita dalam mengecek response yang sesuai untuk API. Di Laravel, untuk membuat sample data kita dapat menggunakan fitur seeder. Mari kita buat seeder untuk table hotels dengan perintah:

php artisan make:seeder HotelsSeeder

Pada file yang dihasilkan, kita isi dengan syntax berikut:

<?php

use Illuminate\Database\Seeder; use App\Hotel;

class HotelsSeeder extends Seeder { public function run() { $faker = Faker\Factory::create(); foreach (range(1, 100) as $i) { $website = $faker->domainName; Hotel::create([ 'name' => $faker->streetName . ' Hotel', 'city' => $faker->city, 'address' => $faker->streetAddress, 'country' => $faker->country, 'phone' => $faker->phoneNumber, 'email' => $faker->userName . '@' . $website, 'website' => $website, 'latitude' => $faker->latitude, 'longitude' => $faker->longitude ]); } } }

Pada syntax diatas, kita menggunakan Faker untuk membuat 100 data hotel secara acak. Untuk memudahkan seeding, mari kita panggil seeder ini dari file database/seeds/DatabaseSeeder.php:

<?php

use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder { public function run() { // $this->call(UsersTableSeeder::class); $this->call(HotelsSeeder::class); } }

Jalankan perintah berikut agar sample data ini muncul di database:

php artisan db:seed

Pastikan table hotels sudah terisi dengan 100 record.

Memahami Endpoint

Dalam membuat API, endpoint adalah istilah yang digunakan untuk menyebutkan URL pada API yang sedang dibangun. Misalnya kita punya URL https://travelia.com/auth/token, kita bisa menyebutnya endpoint /auth/token.

API Travelia yang kita bangun akan menggunakan skema RESTful. Tentunya, pembahasan untuk memahami skema RESTful yang lengkap akan membutuhkan penjelasan yang cukup panjang. Pada tutorial ini, kita cukup memahami bahwa fungsi setiap endpoint akan bergantung terhadap HTTP Verb yang digunakan ketika memanggilnya. Dengan skema endpoint paling sederhana sebagai berikut:

  • GET /resources: Untuk melakukan listing semua resource.
  • GET /resources/{id}: Untuk mendapatkan detail dari sebuah resource
  • POST /resources: Untuk membuat resource baru.
  • PUT/PATCH /resources/{id}: Untuk melakukan update terhadap resource sebuah resource.
  • DELETE /resources/{id}: Untuk menghapus sebuah resource

Karena kita hendak membangun API Travelia dengan resource berupa Hotel, maka endpoint yang akan kita bangun adalah:

  • GET /hotels: Menampilkan semua hotel
  • GET /hotels/{id}: Menampilkan sebuah hotel
  • POST /hotels: Membuat hotel
  • PUT/PATCH /hotels/{id}: Update hotel
  • DELETE /hotels/{id}: Menghapus hotel

Oke, untuk sekarang sampai disini dulu tutorialnya. Sampai jumpa di tutorial selanjutnya! :)

P.S: Kebingungan memahami artikel ini? Mungkin Anda belum paham dasar web development di Laravel. Sedikit google tentang dasar-dasar web development dengan Laravel akan membantu, atau silahkan coba baca buku Seminggu Belajar Laravel yang saya tulis.