Halo teman-teman semuanya, pada kesempatan kali ini kita semua akan belajar bersama-sama bagaimana cara membuat API Resources di dalam Laravel 11.
API Resources ini akan kita gunakan untuk mengubah data dari Model menjadi format JSON dengan cepat dan mudah.
SELENGKAPNYA : https://laravel.com/docs/11.x/eloquent-resources
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
Jika perintah di atas berhasil dijalankan, maka kita akan mendapatkan 1 file baru yang berada di dalam folder app/Http/Resources/PostResource.php
.
Langkah 2 - Custom Response
Sebenarnya, secara bawaan API Resource yang telah digenerate sudah bisa langsung digunakan, tapi karena kita akan menyesuaikan format JSON yang diinginkan, maka kita perlu melakukan sedikit modifikasi di dalam file tersebut.
Silahkan teman-teman buka file app/Http/Resources/PostResource.php
, kemudian ubah semua kode-nya menjadi seperti berikut ini.
app/Http/Resources/PostResource.php
<?php
namespace App\Http\Resources;
use Illuminate\Http\Request;
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;
}
/**
* toArray
*
* @param mixed $request
* @return array
*/
public function toArray(Request $request): array
{
return [
'success' => $this->status,
'message' => $this->message,
'data' => $this->resource
];
}
}
Dari perubahan kode di atas, pertama kita menambahkan 3 properti, yaitu:
//define properti
public $status;
public $message;
public $resource;
Properti ini digunakan untuk menyimpan status, pesan, dan data yang akan dikirimkan dalam respons JSON.
Kemudian kita buat method _construct
yang menerima 3 parameter, yaitu $status
, $message
dan $resource
. Konstruktor ini akan dipanggil untuk menginisialisasi nilai dari properti $status
dan $message
dengan nilai yang diberikan oleh controller nantinya.
public function __construct($status, $message, $resource)
{
parent::__construct($resource);
$this->status = $status;
$this->message = $message;
}
Setelah itu, di dalam method toArray
kita ubah bagian return-nya, tujuaanya agar mengembalikan format JSON yang sesuai dengan yang dibutuhkan.
Jadi, tujuan dari PostResource
ini adalah untuk membuat data dari Model Post
ke dalam format JSON yang sesuai dengan kebutuhan, termasuk penambahan informasi status dan pesan tertentu.
Kesimpulan
Pada artikel ini kita telah belajar bagaimana cara membuat API Resources di dalam Laravel 11 dan belajar melakukan kustomisasi response JSON yang akan dibuat oleh API Resource tersebut.
Pada artikel berikutnya, kita semua akan belajar bagaimana cara menampilkan data dari database ke dalam format JSON di Laravel 11.
Terima Kasih