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 modelUserakan 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
UserCollectiondi 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.