Halo teman-teman semuanya, pada artikel kali ini kita semua akan belajar membuat fitur yang bernama API Resources di dalam project Laravel.
Sebelum kita melangkah lebih jauh, maka kita perlu tahu terlebih dahulu apa itu API Resources yang ada di dalam Laravel.
API Resources merupakan layer yang berfungsi untuk melakukan transformasi Model menjadi format JSON dengan mudah, cepat dan scalable. Dengan memanfaatkan fitur ini, kita bisa membuat format JSON dengan sangat terperinci dan tentu saja mempercepat kita dalam waktu pengembangan.
Untuk membuat API Resources di Laravel kita bisa menggunakan perintah artisan make:resource
. Dan secara default file yang digenerate akan diletakkan di dalam folder app/Http/Resources
.
Untuk informasi selengkapnya, teman-teman bisa melihatnya pada dokumentasi resminya di link berikut ini : https://laravel.com/docs/10.x/eloquent-resources#introduction
Setelah mengetahui apa itu API Resources, maka kita akan lanjutkan membuat-nya di dalam project kita.
Langkah 1 - Membuat API Resources
Silahkan teman-teman jalankan perintah berikut ini di dalam terminal/CMD dan pastikan sudah berada di dalam project Laravel-nya.
php artisan make:resource PostResource
Perintah di atas digunakan untuk membuat file API Resource baru dengan nama PostResource.php
, yang mana file-nya bisa teman-teman lihat di dalam folder app/Http/Resources/PostResource.php
.
Langkah 2 - Custom Response JSON
Karena kita akan membuat response JSON yang berbeda, maka kita perlu menyesuaikan isi yang ada di dalam file PostResource.php
.
Jadi, silahkan teman-teman buka file app/Http/Resources/PostResource.php
, kemudian ubah semua kode-nya menjadi seperti berikut ini.
<?php
namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
class PostResource extends JsonResource
{
//define properti
public $status;
public $message;
public $resource;
/**
* __construct
*
* @param mixed $status
* @param mixed $message
* @param mixed $resource
* @return void
*/
public function __construct($status, $message, $resource)
{
parent::__construct($resource);
$this->status = $status;
$this->message = $message;
}
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function toArray($request)
{
return [
'success' => $this->status,
'message' => $this->message,
'data' => $this->resource
];
}
}
Dari perubahan kode di atas, class PostResource
merupakan turunan dari kelas JsonResource
yang disediakan oleh framework Laravel.
class PostResource extends JsonResource
Dan class PostResource
ini memiliki tiga properti publik yaitu $status
, $message
, dan $resource
.
public $status;
public $message;
public $resource;
Properti $status
dan $message
digunakan untuk menyimpan status dan pesan yang ingin ditampilkan dalam response API. Sedangkan properti $resource
digunakan untuk menyimpan data yang akan dikirimkan dalam response API.
Di dalam method __construct
kita berikan tiga parameter yaitu $status
, $message
, dan $resource
. Jadi saat objek dari class PostResource
dibuat dan method __construct
ini dipanggil, maka nilai dari parameter tersebut akan digunakan untuk mengatur nilai dari properti $status
, $message
, dan $resource
.
public function __construct($status, $message, $resource)
{
parent::__construct($resource);
$this->status = $status;
$this->message = $message;
}
Kemudian untuk method toArray()
adalah method yang diimplementasikan dari class JsonResource
. Method ini akan dipanggil ketika objek PostResource
diubah menjadi array.
Method ini akan mengembalikan sebuah array dengan tiga key yaitu success
, message
, dan data
. Nilai dari key success
dan message
akan diambil dari properti $status
dan $message
, sedangkan nilai dari key data
akan diambil dari properti $resource
.
public function toArray($request)
{
return [
'success' => $this->status,
'message' => $this->message,
'data' => $this->resource
];
}
Jadi kurang lebih seperti itu cara membuat API Rsources di dalam Laravel dan sekaligus membuat custom untuk response JSON-nya.
Pada artikel selanjutnya kita semua akan belajar bagaimana cara membuat Model dan Migration, kemudian kita juga akan melakukan konfigurasi database di dalam project Laravel.
Terima Kasih