Tutorial Laravel 12 RESTful API #5 Product Controller

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 229 kali

Rating: 5.00 ⭐

... 12 March 2025, 14:15

Product Controller


Controller dalam laravel, Controller digunakan untuk menangani logika bisnis dan sebagai perantara antara model (database) dan view (tampilan). Seperti contoh, Controller menerima permintaan dari pengguna (misalnya GET, POST, PUT, DELETE) dan mengembalikan respons yang sesuai. Silakan jalankan perintah berikut ini untuk membuat Controller Product.

php artisan make:controller API\ProductController

Perintah diatas akan menghasilkna file baru yang terletak didalam: app/Http/Controllers/API/ProductController.php, silakan buka file tersebut kemudian ubah menjadi seperti berikut ini:

<?php

namespace App\Http\Controllers\Api;

use App\Http\Controllers\Controller;
use App\Http\Requests\ProductRequest;
use App\Http\Resources\ProductResource;
use App\Http\Resources\ProductCollection;
use App\Models\Product;
use Illuminate\Http\Response;

class ProductController extends Controller
{
    public function index()
    {
        $products = Product::latest()->paginate(10);
        return response()->json(new ProductCollection($products), Response::HTTP_OK);
    }

    public function store(ProductRequest $request)
    {
        $product = Product::create($request->validated());

        return response()->json([
            'status' => true,
            'message' => 'Product created successfully',
            'data' => new ProductResource($product),
        ], Response::HTTP_CREATED);
    }

    public function show(Product $product)
    {
        return response()->json([
            'status' => true,
            'message' => 'Product retrieved successfully',
            'data' => new ProductResource($product)
        ], Response::HTTP_OK);
    }

    public function update(ProductRequest $request, Product $product)
    {
        $product->update($request->validated());

        return response()->json([
            'status' => true,
            'message' => 'Product updated successfully',
            'data' => new ProductResource($product),
        ], Response::HTTP_OK);
    }

    public function destroy(Product $product)
    {
        $product->delete();

        return response()->json([
            'status' => true,
            'message' => 'Product deleted successfully',
        ], Response::HTTP_OK);
    }
}

Konfigurasi Rute


Silakan buka file api.php, kemudian tambahkan rute berikut ini:

Route::apiResource('products', ProductController::class);

Sehingga secara keseluruhan akan tampak seperti berikut ini:

<?php
use App\Http\Controllers\Api\ProductController;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;

Route::middleware(['auth:sanctum'])->get('/user', function (Request $request) {
    return $request->user();
});


Route::apiResource('products', ProductController::class);

index()


Fungsi ini bertujuan untuk mengambil produk dari database dan mengembalikannya dalam format JSON, adapun data yang diambil adalah data produk terbaru dengan pagination 10 item per halaman. Untuk melakukan uji coba hasilnya, teman-teman bisa melakukan ujicoba pada postman seperti pada gambar berikut ini:

Terlihat pada gambar di atas, kita berhasil mendapatkan respons dari endpoint API products dengan baik. Respons tersebut terdiri dari statusmessagedata, dan meta yang berisi informasi pagination. Pada materi berikutnya, kita akan mencoba menyimpan data ke dalam database melalui endpoint yang telah kita konfigurasi.