Membuat API CRUD Sederhana

Langkah Implementasi API CRUD

1
Persiapan Proyek Laravel
a. Buat Proyek Laravel Baru

Langkah pertama adalah membuat proyek Laravel baru melalui terminal atau CMD dengan perintah Composer.

composer create-project laravel/laravel tugas-api-crud
Screenshot terminal setelah menjalankan 'composer create-project'
b. Konfigurasi Database

Buka file .env di root proyek. Buat sebuah database baru (misal: `tugas_api_crud`) di phpMyAdmin, lalu sesuaikan konfigurasi koneksi di file .env.

DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=tugas_api_crud DB_USERNAME=root DB_PASSWORD=
Screenshot file .env yang sudah dikonfigurasi Screenshot file .env yang sudah dikonfigurasi
2
Model & Migration
a. Buat Model dan File Migration

Jalankan perintah Artisan ini untuk membuat Model `Product` sekaligus file migration-nya. Flag `-m` sangat membantu untuk efisiensi.

php artisan make:model Product -m
b. Definisikan Skema Tabel

Buka file migration yang baru dibuat di `database/migrations/`. Definisikan kolom untuk tabel `products` di dalam fungsi `up()`.


public function up(): void
{
    Schema::create('products', function (Blueprint $table) {
        $table->id();
        $table->string('name');
        $table->text('description')->nullable();
        $table->decimal('price', 8, 2);
        $table->timestamps();
    });
}
                    
c. Jalankan Migration

Eksekusi migration untuk membuat tabel di database.

php artisan migrate
Screenshot terminal setelah 'php artisan migrate' berhasil Screenshot terminal setelah 'php artisan migrate' berhasil
d. Konfigurasi Model

Buka file `app/Models/Product.php` dan tambahkan properti `$fillable`. Ini penting untuk keamanan dan mengizinkan Mass Assignment (membuat data dari array).


protected $fillable = [
    'name',
    'description',
    'price',
];
                    
3
Membuat Controller
a. Buat API Controller

Buat controller khusus untuk API dengan flag `--api` yang akan men-generate method-method CRUD secara otomatis.

php artisan make:controller Api/ProductController --api
b. Implementasi Logika CRUD

Isi setiap method di dalam `app/Http/Controllers/Api/ProductController.php` dengan logika untuk Create, Read, Update, dan Delete.


<?php

namespace App\Http\Controllers\Api;

use App\Http\Controllers\Controller;
use App\Models\Product;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;

class ProductController extends Controller
{
    /**
     * Display a listing of the resource.
     */
    public function index()
    {
        $products = Product::all();
        return response()->json([
            'success' => true,
            'message' => 'Daftar data produk',
            'data' => $products
        ], 200);
    }

    /**
     * Store a newly created resource in storage.
     */
    public function store(Request $request)
    {
        $validator = Validator::make($request->all(), [
            'name' => 'required',
            'price' => 'required|numeric',
        ]);

        if ($validator->fails()) {
            return response()->json($validator->errors(), 422);
        }

        $products = Product::create($request->all());

        return response()->json([
            'success' => true,
            'message' => 'Produk berhasil dibuat',
            'data' => $products
        ], 201);
    }

    /**
     * Display the specified resource.
     */
    public function show(string $id)
    {
        $products = Product::find($id);

        if (!$products) {
            return response()->json(['message' => 'Produk tidak ditemukan'], 404);
        }

        return response()->json([
            'success' => true,
            'message' => 'Detail data produk',
            'data' => $products
        ], 200);
    }

    /**
     * Update the specified resource in storage.
     */
    public function update(Request $request, string $id)
    {
        $product = Product::find($id);

        if (!$product) {
            return response()->json(['message' => 'Produk tidak ditemukan'], 404);
        }

        $validator = Validator::make($request->all(), [
            'name'  => 'required',
            'price' => 'required|numeric',
        ]);

        if ($validator->fails()) {
            return response()->json($validator->errors(), 422);
        }

        $product->update($request->all());

        return response()->json([
            'success' => true,
            'message' => 'Produk berhasil diperbarui',
            'data' => $product
        ], 200);
    }

    /**
     * Remove the specified resource from storage.
     */
    public function destroy(string $id)
    {
        $product = Product::find($id);

        if (!$product) {
            return response()->json(['message' => 'Produk tidak ditemukan'], 404);
        }

        $product->delete();

        return response()->json([
            'success' => true,
            'message' => 'Produk berhasil dihapus'
        ], 200);
    }
}
                    
4
Mendefinisikan Rute API

Buka file `routes/api.php` dan daftarkan controller kita menggunakan `Route::apiResource`. Ini adalah cara cepat untuk membuat semua endpoint CRUD.

use App\Http\Controllers\Api\ProductController; Route::apiResource('products', ProductController::class);

Setelah ini, jalankan `php artisan route:list` untuk melihat semua endpoint yang berhasil dibuat.

Screenshot output 'php artisan route:list' yang menampilkan rute products
5
Testing API dengan Postman

Jalankan server pengembangan Laravel dengan `php artisan serve`, lalu uji setiap endpoint menggunakan Postman.

a. Create Product (POST)
  • Method: POST
  • URL: http://127.0.0.1:8000/api/products
  • Body: `form-data` dengan key `name`, `description`, `price`.
Screenshot Postman saat berhasil melakukan request POST
b. Get All Products (GET)
  • Method: GET
  • URL: http://127.0.0.1:8000/api/products
Screenshot Postman saat berhasil melakukan request GET semua produk
c. Update Product (PUT)
  • Method: PUT
  • URL: http://127.0.0.1:8000/api/products/{id}
  • Body: `x-www-form-urlencoded` dengan key yang ingin diubah.
d. Delete Product (DELETE)
  • Method: DELETE
  • URL: http://127.0.0.1:8000/api/products/{id}

Kesimpulan

Membuat API CRUD dengan Laravel adalah proses yang efisien dan terstruktur berkat fitur-fitur seperti Artisan, Eloquent ORM, dan sistem routing yang simpel. Dengan mengikuti langkah-langkah di atas, kita dapat membangun backend yang fungsional untuk aplikasi modern. Pengujian menggunakan Postman memastikan setiap endpoint bekerja sesuai harapan sebelum diintegrasikan dengan frontend.

Link Repository: https://github.com/Alone1011/2311532011-Rifki-TugasPweb-API-CRUD.git

Komentar (0)

Tinggalkan Komentar