Halo teman-teman semuanya, di artikel sebelumnya kita telah belajar bagaimana cara melakukan installasi project Laravel 9, sekarang kita akan lanjutkan belajar tentang API Resources di dalam Laravel.
API Resources merupakan sebuah layer yang mentransformasi data yang di dapatkan dari Model dan mengubahnya menjadi format JSON dengan lebih cepat dan baik. Dengan menggunakan fitur ini kita bisa lebih mudah melakukan custom response, misalnya ingin menampilkan attribute dan collection tertentu yang ada di dalam Model menjadi format JSON.
Sebenernya kita juga bisa menggunakan fitur dari Eloquent yaitu toJson
untuk membuat sebuah response di dalam Model, tapi dengan menggunakan API Resouces kita bisa memberikan kontrol lebih dan sangat terperinci.
Langkah 1 - Membuat API Resources
Sekarang kita lanjutkan untuk melakukan generate resources. Silahkan jalankan perintah berikut ini di dalam terminal/CMD dan pastikan sudah berada di dalam project Laravel-nya.
php artisan make:resource PostResource
Jika perintah di atas berhasil dijalankan, maka kita akan mendapatkan 1 file resource baru dengan nama PostResource.php
yang berada di dalam folder app/Http/Resources
.
Secara default kita sudah bisa menggunakan Resources tersebut, tapi karena kita ingin memberikan custom response, maka kita perlu sedikit memberikan perubahan di dalamnya.
Langkah 2 - Melakukan Custom API Resources
Sekarang kita lanjutkan untuk melakukan kustomisasi Resource yang sudah kita buat tadi. SIlahkan 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;
/**
* __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, pertama kita menambahkan 2 properti baru, yaitu $statue
dan $message
.
//define properti
public $status;
public $message;
Setelah itu kita membuat sebuah method dengan jenis __construct
, dimana fungsi ini akan pertama kali dijalankan ketika class tersebut di panggil. Dan di dalamnya kita parsing 3 variable :
-
$status
- merupakan properti $status
yang kita buat di atas, yang mana isinya nanti akan berupa nilai boolean, yaitu true
atau false
.
-
$message
- merupakan properti $message
yang kita buat di atas, yang mana isinya nanti akan berupa pesan/message tentang hasil yang dibuat.
-
$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 di atas, kurang lebih seperti berikut ini :
return [
'success' => $this->status,
'message' => $this->message,
'data' => $this->resource
];
Sampai disini pembahasan bagaimana cara membuat API Resource di Laravel dan melakukan kustomisasi di dalamnya. Di artikel berikutnya kita akan belajar bagaimana cara melakukan proses menampilkan data menggunakan Rest API di Laravel 9.
Terima Kasih