Lewati ke konten utama

API Resources Laravel

API resources di Laravel menyediakan cara yang kuat dan elegan untuk mengubah model Eloquent dan koleksi menjadi respons JSON yang diformat dengan baik. Ini sangat berguna ketika membangun API yang mengembalikan data dalam format JSON.

Mengapa Menggunakan API Resources?

  • Transformasi Data: API resources memungkinkan Anda untuk mengubah data model Eloquent menjadi format JSON yang disesuaikan.
  • Konsistensi: API resources membantu Anda untuk memastikan bahwa respons API Anda memiliki format yang konsisten.
  • Fleksibilitas: API resources memberi Anda fleksibilitas untuk menyertakan atau mengecualikan atribut model, menambahkan atribut kustom, dan menyertakan relasi.

Membuat API Resource

Anda dapat membuat API resource baru menggunakan perintah Artisan:

Bash

php artisan make:resource NamaResource
  • Perintah ini akan membuat file resource baru di direktori app/Http/Resources.

Contoh API Resource

PHP

// app/Http/Resources/UserResource.php

namespace App\Http\Resources;

use Illuminate\Http\Resources\Json\JsonResource;

class UserResource extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function toArray($request)
{
return [
'id' => $this->id,
'name' => $this->name,
'email' => $this->email,
'created_at' => $this->created_at,
];
}
}
  • Metode toArray() mendefinisikan bagaimana model User akan diubah menjadi array JSON.

Menggunakan API Resource

Anda dapat menggunakan API resource di controller Anda untuk mengembalikan respons JSON.

PHP

// app/Http/Controllers/UserController.php

namespace App\Http\Controllers;

use App\Http\Resources\UserResource;
use App\Models\User;

class UserController extends Controller
{
public function index()
{
$users = User::all();
return UserResource::collection($users);
}

public function show(User $user)
{
return new UserResource($user);
}
}
  • Metode UserResource::collection() digunakan untuk mengubah koleksi model menjadi respons JSON.
  • Konstruktor new UserResource($user) digunakan untuk mengubah satu model menjadi respons JSON.

Resource Collections

  • Untuk mengembalikan koleksi model, Anda dapat menggunakan ResourceCollection.
  • Contoh:
PHP

// app/Http/Resources/UserCollection.php

namespace App\Http\Resources;

use Illuminate\Http\Resources\Json\ResourceCollection;

class UserCollection extends ResourceCollection
{
/**
* Transform the resource collection into an array.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function toArray($request)
{
return parent::toArray($request);
}
}
  • Anda dapat menggunakan UserCollection di controller Anda:
PHP

return new UserCollection($users);

Tips API Resources Laravel

  • Gunakan API resources untuk membuat respons API yang konsisten dan terstruktur.
  • Gunakan resource collections untuk mengembalikan koleksi model.
  • Gunakan metode when() untuk menyertakan atribut kondisional.
  • Gunakan metode mergeWhen() untuk menggabungkan atribut kondisional ke dalam respons.
  • Gunakan metode withoutWrapping() untuk menghapus pembungkus data dari respons.
  • Sesuaikan data keluaran agar sesuai dengan kebutuhan aplikasi.