Praktikum June 17, 2025 · By Rahul

API dan Restful API

A. PERSIAPAN AWAL

Software yang Dibutuhkan

Pastikan kamu sudah menginstall:

B. MEMBUAT API CRUD DENGAN LARAVEL

Buat Proyek Laravel Baru

composer create-project laravel/laravel=^12.0 tugas-API --prefer-dist

C. MEMBUAT TABEL DAN MODEL PRODUK

1. Buat Migration untuk Tabel Produk

php artisan make:migration create_products_table

Edit file migration:

public function up()
{
    Schema::create('products', function (Blueprint $table) {
        $table->id();
        $table->string('name');
        $table->text('description');
        $table->decimal('price', 10, 2);
        $table->integer('stock');
        $table->timestamps();
    });
}

2. Jalankan Migrasi

Edit file .env:

DB_DATABASE=mysql
DB_USERNAME=root
DB_PASSWORD=
php artisan migrate

D. MEMBUAT MODEL DAN CONTROLLER

1. Buat Model Product

php artisan make:model Product

Edit file app/Models/Product.php:

class Product extends Model
{
    protected $fillable = ['name', 'description', 'price', 'stock'];

    protected $casts = [
        'price' => 'decimal:2'
    ];
}

2. Buat Controller API

php artisan make:controller ProductController --api

Isi app/Http/Controllers/ProductController.php:

class ProductController extends Controller
{
    public function index()
    {
        return response()->json(Product::all());
    }

    public function store(Request $request)
    {
        $validated = $request->validate([
            'name' => 'required|string|max:255',
            'description' => 'required|string',
            'price' => 'required|numeric|min:0',
            'stock' => 'required|integer|min:0'
        ]);
        $product = Product::create($validated);
        return response()->json($product, 201);
    }

    public function show(Product $product)
    {
        return response()->json($product);
    }

    public function update(Request $request, Product $product)
    {
        $validated = $request->validate([
            'name' => 'sometimes|string|max:255',
            'description' => 'sometimes|string',
            'price' => 'sometimes|numeric|min:0',
            'stock' => 'sometimes|integer|min:0'
        ]);
        $product->update($validated);
        return response()->json($product);
    }

    public function destroy(Product $product)
    {
        $product->delete();
        return response()->json(['message' => 'Product deleted successfully']);
    }
}

E. MENDAFTARKAN ROUTE API

Tambahkan Route di File routes/api.php

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

Dengan ini, Laravel akan otomatis membuat 5 endpoint:

  • GET /api/products → ambil semua produk
  • POST /api/products → tambah produk baru
  • GET /api/products/{id} → ambil detail produk
  • PUT /api/products/{id} → ubah produk
  • DELETE /api/products/{id} → hapus produk

F. TESTING DENGAN POSTMAN

1. Buka POSTMAN dan Uji Coba Endpoint

a. — GET Semua Produk

  1. Method: GET
  2. URL: http://localhost:8000/api/products
  3. Headers:
    • Key: Accept, Value: application/json
  4. Klik Send


b. — POST Tambah Produk Baru

  1. Method: POST
  2. URL: http://localhost:8000/api/products
  3. Headers:
    • Accept: application/json
    • Content-Type: application/json
  4. Body (raw JSON):
{
  "name": "Smartphone",
  "description": "Android 5G RAM 8GB",
  "price": 3000000,
  "stock": 10
}

c. — GET Detail Produk

  1. Method: GET
  2. URL: http://localhost:8000/api/products/1 (ubah 1 sesuai ID produk)
  3. Headers:
    • Accept: application/json
  4. Klik Send


d. — PUT Update Produk

  1. Method: PUT
  2. URL: http://localhost:8000/api/products/1
  3. Headers:
    • Accept: application/json
    • Content-Type: application/json
  4. Body (raw JSON):
{
  "name": "Smartphone Pro",
  "description": "RAM 12GB, Kamera 108MP",
  "price": 5000000,
  "stock": 5
}

e. — DELETE Hapus Produk

  1. Method: DELETE
  2. URL: http://localhost:8000/api/products/1
  3. Headers:
    • Accept: application/json
  4. Klik Send


Tags: #Laravel #MVC #PHP #Praktikum