Membuat API Resources Laravel 9
Apa sih API resource ?
API Resources merupakan sebuah layer yang merubah data yang di dapatkan dari Model / database dan mengubahnya menjadi format JSON dengan lebih cepat. fitur ini memungkinkan kita bisa lebih mudah untuk menyesuaikan response apa saja yang akan kita berikan Ketika ada request yang masuk, misalnya ingin menampilkan attribute dan collection tertentu yang ada di dalam Model menjadi format JSON dan lain sebagainya.
Sebenarnya Laravel juga sudah menyediakan fitur dari Eloquent yaitu to Json yang berguna untuk membuat sebuah response di dalam Model, tapi menurut saya dengan menggunakan API Resouces kita mempunyai kontrol yang lebih terhadap apa yang ingin kita kembalikan dalam bentuk response.
Membuat API Resources
- Melakukan generate resources dengan menuliskan perintah
php artisan make:PostResource
Jika perintah di atas berhasil dijalankan, kita akan milihat satu file resource baru dengan nama PostResource.php yang berada di dalam folder app/Http/Resources.
Sampai di sini sebetulnya kita sudah bisa menggunakan Resources tersebut, tapi karena kita ingin membuat sedikit custom response, maka kita perlu memberikan perubahan di dalamnya.
Custom API Resources
- buka file app/Http/Resources/PostResource.php, lalu lakukan perubahan pada script kamu sehingga tampilannya menjadi seperti berikut ini :
<?php
namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
class PostResource extends JsonResource
{
public $status;
public $message;
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|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
*/
public function toArray($request)
{
// return parent::toArray($request);
return [
'success' => $this->status,
'message' => $this->message,
'data' => $this->resource
];
}
}
Penjelasan
Pada baris 9 & 10 kita menambahkan 2 properti baru, yaitu $status dan $message.
- $status bertujuan untuk, dimana isinya nanti akan berupa nilai boolean, yaitu true atau false.
- $message yang mana isinya nanti akan berupa pesan/message tentang hasil yang terjadi (response).
- $resource merupakan data yang akan di transformasi, ini nanti akan berupa data Model yang dikirim dari controller.
Setelah itu, di dalam method toArray kita melakukan return ke 3 variable yaitu variable status, message, resource .
Bagimana cukup mudah bukan, bagaimana cara membuat API Resource di Laravel 9 dan melakukan kustomisasi di dalamnya.