Tutorial Laravel 12 RESTful API #4 Product Resource

Pelajari cara membuat RESTful API menggunakan Laravel 12 dalam tutorial lengkap ini. Mulai dari instalasi, konfigurasi, hingga implementasi dan fitur CRUD, tutorial ini akan membantu Anda memahami konsep API yang efisien dan aman di Laravel 12.

✅ Telah dilihat 227 kali

Rating: 5.00 ⭐

... 12 March 2025, 14:15

ProductResource


Seperti disinggung pada materi sebelumnya, resource di Laravel digunakan untuk mengubah data model menjadi format JSON yang lebih terstruktur ketika mengirim respons API. JSON (JavaScript Object Notation) adalah format yang paling umum digunakan dalam API karena ringan, mudah dibaca, dan kompatibel dengan banyak bahasa pemrograman. JSON memiliki struktur yang sederhana dibandingkan format lain seperti XML, sehingga lebih cepat dalam pengiriman data melalui jaringan. Silakan jalankan perintah beriukut untuk membuat ProductResource.

php artisan make:resource ProductResource

Perintah diatas akan menghasilkan file yang terletak di App\Http\Resources\ProductResource.php. Silakan buka file tersebut, kemudian ubah menjadi seperti berikut ini:

<?php

namespace App\Http\Resources;

use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource;

class ProductResource extends JsonResource
{
    public function toArray(Request $request): array
    {
        return [
            'id' => $this->id,
            'name' => $this->name,
            'price' => $this->price,
            'description' => $this->description,
            'stock' => $this->stock,
            'created_at' => $this->created_at->format('Y-m-d H:i:s'),
            'updated_at' => $this->updated_at->format('Y-m-d H:i:s'),
        ];
    }
}

ProductResource adalah class yang mewarisi JsonResource untuk mengatur format respons API. Kemudian juga terdaapt method toArray yang berfungsi untuk menentukan format data JSON yang dikembalikan saat API mengakses produk. Dengan menggunakan resource seperti ini, Status dan pesan yang diterima lebih jelas, hal ini Memudahkan debugging dan handling ketika API di konsumsi oleh frontend. Kita juga bisa mendapat Respons JSON lebih terstruktur, hal ini memudahkan ekspansi API di masa depan. Pada materi berikutnya, kita akan membuat controller untuk menangani proses CRUD data produk dan menerapkan Request dan Juga Resource yang sudah kita buat.

Product Collection


Karena kita hendak menggukana fitur paginate, maka sebaiknya kita gunakan Resource Collection untuk menyertakan informasi paginasi. Silakan teman-teman jalnkan peritnah berikut:

php artisan make:resource ProductCollection

Perintah diatas akan menhasilkan sebuah file yang terletak di app/Http/Resources/ProductCollection.php, buka file tersebut kemudian ubah menjadi seperti berikut ini:

<?php

namespace App\Http\Resources;

use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\ResourceCollection;

class ProductCollection extends ResourceCollection
{
    public function toArray(Request $request): array
    {
        return [
            'status' => true,
            'message' => 'Products retrieved successfully',
            'data' => $this->collection, 
            'meta' => [
                'current_page' => $this->currentPage(),
                'last_page' => $this->lastPage(),
                'per_page' => $this->perPage(),
                'total' => $this->total(),
            ],
        ];
    }
}

Dengan menggunakan collection seperti contoh diatas, maka response data product kurang lebih akan telihat seperti berikut ini:

{
    "status": true,
    "message": "Products retrieved successfully",
    "data": [
        {
            "id": 1,
            "name": "Laptop",
            "price": 12000000,
            "description": "Laptop gaming terbaru",
            "stock": 10,
            "created_at": "2024-03-03 12:00:00",
            "updated_at": "2024-03-03 12:00:00"
        },
        {
            "id": 2,
            "name": "Monitor",
            "price": 3000000,
            "description": "Monitor 27 inch",
            "stock": 5,
            "created_at": "2024-03-03 12:10:00",
            "updated_at": "2024-03-03 12:10:00"
        }
    ],
    "meta": {
        "current_page": 1,
        "last_page": 5,
        "per_page": 10,
        "total": 50
    }
}

Terlihat kita sudah berhasil membuat respnse JSON yang bersifat readable dan informatif yang terdiri dari status permintaan, pesan, data dan juga meta yang berisi informasi paginasi yang terdiri dari current_pagelast_pageper_page dan total. Pada materi berikutnya, kita akan membuat controller untuk menangani proses CRUD data produk dan menerapkan Request dan Juga Resource yang sudah kita buat.