API atau Application Programming Interface merupakan media komunikasi dan pertukaran data antar layanan. API sangat erat dengan pemrograman, apalagi sekarang banyak sekali aplikasi yang multi platform, yang tentu saja membutuhkan API untuk berkomunikasi dan bertukar data satu sama lain.
Pada posting sebelumnya kita sudah membahas mengenai authentikasi API di Laravel menggunakan Laravel Passport. Sekarang kita akan membuat REST API menggunakan Laravel.
[Baca: Membuat Authentikasi API dengan Laravel Passport]
Daftar Isi
Membuat REST API dengan Laravel
Untuk membuat REST API, kita akan memanfaatkan API Resource yang sudah disediakan Laravel. Kita akan membuat REST API untuk mengelola data mahasiswa.
Membuat Model
Pertama, kita perlu membuat model dan juga tabel database. Jalankan perintah berikut untuk membuat model dan juga migrationnya.
php artisan make:model Student -m
Dengan perintah tersebut, kita telah membuat model dengan nama Student dan juga file migrationnya. Pada method up() ganti dengan kode berikut untuk membuat tabelnya.
Schema::create('students', function (Blueprint $table) {
$table->id();
$table->string('name', 32);
$table->string('npm', 16)->unique();
$table->string('email', 64)->unique();
$table->timestamps();
});
Jalankan perintah migrate
untuk membuat tabel.
php artisan migrate
Setelah database siap, selanjutnya kita akan membuat controller.
Membuat Controller
Selanjutnya adalah membuat controller yang nantinya akan menangani proses-proses REST API. Jalankan perintah berikut:
php artisan make:controller Api/StudentController --api --model=Student
Perintah diatas akan menghasilkan controller baru yang tersimpan di folder app/Http/Controllers/Api
.
Mendaftarkan Route
Selanjutnya kita perlu mendaftarkan route dari controller yang sudah kita buat. Buka file routes/api.php
dan tambahkan kode berikut:
Route::apiResource('/students', 'Api\StudentController');
Untuk melihat daftar URL atau endpointnya, kita bisa menggunakan perintah route:list
php artisan route:list
Maka akan tampil URL dari route REST API kita seperti pada gambar berikut:

Bisa kita lihat pada bagian URI, endpoint dari REST API yang kita buat adalah: /api/students
. Kita akan membahasnya di poin berikutnya.
Memahami Struktur REST API Laravel
Seperti pada gambar diatas, struktur URL REST API yang kita buat sesuai dengan standar REST API pada umumnya. Misalnya untuk menambah sumber daya (data) baru, kita harus menggunakan method POST. Untuk mengubah sumber daya (data) yang sudah ada kita harus menggunakan method PUT. Dan juga tindakan yang lainnya seperti pada tabel berikut.
Tindakan | URL | HTTP Method | Method |
---|---|---|---|
Menambah data | /api/students | POST | store() |
Mengubah data | /api/students/{id} | PUT | update() |
Menghapus data | /api/students/{id} | DELETE | destroy() |
Melihat data | /api/students/{id} | GET | show() |
Melihat semua data | /api/students | GET | index() |
Saat kita membuat controller dengan perintah artisan diatas, kita menambahkan flag “–api”, maksudnya adalah supaya Laravel hanya membuat method-method yang akan digunakan untuk keperluan REST API, yaitu method index, store, update, show dan destroy. Sedangkan method create dan edit tidak akan dibuat.
Sedangkan flag “–model=Student” adalah perintah untuk mengasosiasikan controller dengan model tertentu. Disini, controller StudentController dihubungkan dengan model Student.
Selanjutnya kita akan menguji REST API kita. Disini saya akan menggunakan aplikasi Postman. Jangan lupa jalankan artisan serve
sebelum memulai.
php artisan serve
Menambah data
Untuk menambahkan data atau sumber daya baru, method yang digunakan adalah method store().
Pada controller StudentController.php
, ubah method store()
menjadi seperti berikut:
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'name' => ['required', 'max:32'],
'npm' => ['required', 'max:16', 'unique:students,npm'],
'email' => ['required', 'email', 'max:64', 'unique:students,email']
]);
if ($validator->fails()) {
return response()
->json([
'error' => true,
'validations' => $validator->errors()
], 422);
}
$student = new Student();
$student->name = $request->name;
$student->npm = $request->npm;
$student->email = $request->email;
$student->save();
return response()
->json([
'success' => true,
'data' => $student
]);
}
Untuk menguji, jalankan Postman seperti pada gambar berikut:

Jika menghasilkan response seperti diatas, artinya kita sudah berhasil menambahkan data ke database. Cobalah untuk memasukkan beberapa data lagi.
Pada contoh diatas saya menambahkan data mahasiswa dengan nama Ismiranda Syafitri,
NPM G1A019001
dan email [email protected]
. Setelah berhasil ID yang dihasilkan adalah 2.
Mengubah data
Untuk mengubah atau memperbarui data yang sudah ada, method yang digunakan adalah method update()
. Kodenya seperti berikut:
public function update(Request $request, Student $student)
{
$validator = Validator::make($request->all(), [
'name' => ['required', 'max:32'],
'npm' => ['required', 'max:16'],
'email' => ['required', 'email', 'max:64']
]);
if ($validator->fails()) {
return response()
->json([
'error' => true,
'validations' => $validator->errors()
], 422);
}
$student->name = $request->name;
$student->npm = $request->npm;
$student->email = $request->email;
$student->save();
return response()
->json([
'success' => true,
'data' => $student
]);
}
Untuk menguji, jalankan Postman dengan perintah seperti berikut:

Pada contoh diatas, data yang akan diubah adalah data dengan id 2. Selanjutnya pada kolom-kolom, saya memasukkan data baru untuk mengganti yang lama.
Menghapus data
Untuk menghapus data, method yang digunakan adalah method destroy()
public function destroy(Student $student)
{
$student->delete();
return response()
->json([
'success' => true
]);
}
Untuk menguji, kita akan menghapus data dengan id 2. Jalankan Postman dengan perintah berikut:

Jika menghasilkan response seperti diatas, artinya kita berhasil menghapus data melalui REST API.
Melihat data
Untuk melihat data tunggal dengan id tertentu, method yang digunakan adalah method show(). Method ini akan menampilkan data berdasarkan id yang diberikan. Pada method show() isikan dengan kode berikut:
public function show(Student $student)
{
return $student;
}
Kemudian coba jalankan Postman. Disini saya akan menampilkan data dengan ID 1.

Pada contoh diatas saya melakukan request dengan method GET, dan data yang diminta adalah data dengan ID 1.
Menampilkan semua data
Untuk menampilkan semua data, method yang digunakan adalah method index(). Isi dengan kode berikut:
public function index()
{
return Student::all();
}
Method ini akan menampilkan semua data pada tabel students.

Seperti itulah cara membuat REST API menggunakan Laravel. REST API yang sangat sederhana dan sebenarnya hanya CRUD biasa. Dengan REST API ini, kita bisa mengintegrasikan aplikasi kita dengan aplikasi lainnya.
Melindungi REST API dengan Authentikasi
REST API yang sudah kita buat diatas sebetulnya sudah siap digunakan. Tapi, semua orang bisa mengakses REST API kita jika mengetahui URLnya. Hal ini tentu saja akan berbahaya, karena orang lain bisa mengubah bahkan menghapus data-data kita melalui REST API.
Solusinya adalah dengan melindunginya menggunakan authentikasi. Disini kita akan menggunakan Laravel Passport untuk melindungi REST API kita. Untuk menggunakan Laravel Passport, silahkan baca melalui tautan berikut: Membuat Authentikasi API dengan Laravel Passport.
Jika sudah, buka file routes/api.php
dan ubah route sebelumnya menjadi seperti berikut:
Route::group(['middleware' => ['auth:api']], function () {
Route::apiResource('/students', 'Api\StudentController');
});
Semua route yang dimasukkan dalam middleware auth:api
selanjutnya tidak akan bisa diakses secara langsung, tetapi harus menyertakan token bearer yang dihasilkan saat login.