Membuat api sederhana dengan Laravel

Jika Anda sudah memiliki proyek Laravel yang terinstal dan ProductController sudah dibuat, Anda dapat menambahkan rute-rute berikut ke dalam file routes/api.php untuk memenuhi persyaratan Anda:

<?php

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\ProductController;

// Route untuk menampilkan daftar produk
Route::get('/list-product', [ProductController::class, 'list_product']);

// Route untuk menampilkan detail produk
Route::get('/detail-product/{id}', [ProductController::class, 'detail_product']);

// Route untuk menyimpan produk baru
Route::post('/create-product', [ProductController::class, 'create_product']);

// Route untuk mengupdate produk
Route::put('/update-product/{id}', [ProductController::class, 'update_product']);

// Route untuk menghapus produk
Route::delete('/delete-product/{id}', [ProductController::class, 'delete_product']);

Pastikan Anda menggantikan ProductController::class dengan namespace yang sesuai jika diperlukan dalam proyek Anda. Anda juga perlu mengonfigurasi metode-metode ini di dalam ProductController.

Berikut adalah contoh implementasi metode-metode di dalam ProductController:

<?php

namespace App\Http\Controllers;

use App\Models\Product;

use Illuminate\Http\Request;

class ProductController extends Controller
{
    public function index()
    {
        $products = Product::all(); // Mengambil semua produk dari tabel 'products'
        return view('products.index', compact('products'));
    }

    public function create()
    {
        return view('products.create');
    }

    public function store(Request $request)
    {
        $request->validate([
            'name' => 'required|string|max:255',
            'price' => 'required|numeric',
            'stock' => 'required|integer',
        ]);

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

        return redirect()->route('products.index')->with('success', 'Product created successfully');
    }

    public function show($id)
    {
        $product = Product::find($id); // Mengambil produk berdasarkan ID
        return view('products.show', compact('product'));
    }

    public function edit($id)
    {
        $product = Product::find($id); // Mengambil produk berdasarkan ID
        return view('products.edit', compact('product'));
    }

    public function update(Request $request, $id)
    {
        $request->validate([
            'name' => 'required|string|max:255',
            'price' => 'required|numeric',
            'stock' => 'required|integer',
        ]);

        $product = Product::find($id);
        $product->update($request->all());

        return redirect()->route('products.index')->with('success', 'Product updated successfully');
    }

    public function destroy($id)
    {
        $product = Product::find($id);
        
        $product->delete();

        return redirect()->route('products.index')->with('success', 'Product deleted successfully');
    }
        // Menampilkan daftar produk
        public function list_product()
        {
            $products = Product::all();
            return response()->json($products);
        }
    
        // Menampilkan detail produk berdasarkan ID
        public function detail_product($id)
        {
            $product = Product::find($id);
            if (!$product) {
                return response()->json(['message' => 'Produk tidak ditemukan'], 404);
            }
            return response()->json($product);
        }
    
        // Menyimpan produk baru
        public function create_product(Request $request)
        {
            $request->validate([
                'name' => 'required|string|max:255',
                'price' => 'required|numeric',
                'stock' => 'required|integer',
            ]);
    
            Product::create($request->all());
    
            return response()->json(['message' => 'Produk berhasil disimpan'], 201);
        }
    
        // Mengupdate produk berdasarkan ID
        public function update_product(Request $request, $id)
        {
            $product = Product::find($id);
            if (!$product) {
                return response()->json(['message' => 'Produk tidak ditemukan'], 404);
            }
            $request->validate([
                'name' => 'required|string|max:255',
                'price' => 'required|numeric',
                'stock' => 'required|integer',
            ]);

            $product->update($request->all());
    
            return response()->json(['message' => 'Produk berhasil diupdate'], 200);
        }
    
        // Menghapus produk berdasarkan ID
        public function delete_product($id)
        {
            $product = Product::find($id);
            if (!$product) {
                return response()->json(['message' => 'Produk tidak ditemukan'], 404);
            }
    
            $product->delete();
    
            return response()->json(['message' => 'Produk berhasil dihapus'], 200);
        }
}

Pastikan Anda menyesuaikan logika penyimpanan dan validasi sesuai dengan kebutuhan aplikasi Anda dalam metode create_product dan update_product. Selain itu, pastikan Anda telah menambahkan validasi input dan manajemen kesalahan yang diperlukan untuk menjaga keamanan dan keandalan API Anda.

Cara menguji endpoint-endpoint yang telah dibuat di Postman:

1. Menampilkan Daftar Produk (GET /list-product)

  1. Buka Postman dan buat permintaan baru dengan metode GET.

  2. Tempel URL endpoint ke dalam kolom URL di Postman: http://127.0.0.1:8000/list-product.

  3. Klik tombol "Send" untuk mengirim permintaan GET ke endpoint tersebut.

2. Menampilkan Detail Produk (GET /detail-product/{id})

  1. Buka Postman dan buat permintaan baru dengan metode GET.

  2. Tempel URL endpoint ke dalam kolom URL di Postman, ganti {id} dengan ID produk yang ingin Anda lihat: http://127.0.0.1:8000/detail-product/1.

  3. Klik tombol "Send" untuk mengirim permintaan GET ke endpoint tersebut.

3. Menyimpan Produk Baru (POST /create-product)

  1. Buka Postman dan buat permintaan baru dengan metode POST.

  2. Tempel URL endpoint ke dalam kolom URL di Postman: http://127.0.0.1:8000/create-product.

  3. Pilih metode POST.

  4. Pilih tab "Body" di bawah kolom URL.

  5. Pilih format data yang ingin Anda kirim, misalnya JSON.

  6. Masukkan data produk baru dalam format JSON ke dalam kolom body. Pastikan name adalah string, price dan stock adalah angka (integer).

  7. Klik tombol "Send" untuk mengirim permintaan POST ke endpoint tersebut.

Contoh Data JSON untuk Permintaan POST:

{
    "name": "Nama Produk",
    "price": 100,
    "stock": 50
}

4. Mengupdate Produk (PUT /update-product/{id})

  1. Buka Postman dan buat permintaan baru dengan metode PUT.

  2. Tempel URL endpoint ke dalam kolom URL di Postman, ganti {id} dengan ID produk yang ingin Anda perbarui: http://127.0.0.1:8000/update-product/1.

  3. Pilih metode PUT.

  4. Pilih tab "Body" di bawah kolom URL.

  5. Pilih format data yang ingin Anda kirim, misalnya JSON.

  6. Masukkan data yang ingin Anda perbarui dalam format JSON ke dalam kolom body. Pastikan name adalah string, price dan stock adalah angka (integer).

  7. Klik tombol "Send" untuk mengirim permintaan PUT ke endpoint tersebut.

Contoh Data JSON untuk Permintaan PUT:

{
    "name": "Nama Produk Baru",
    "price": 150,
    "stock": 30
}

5. Menghapus Produk (DELETE /delete-product/{id})

  1. Buka Postman dan buat permintaan baru dengan metode DELETE.

  2. Tempel URL endpoint ke dalam kolom URL di Postman, ganti {id} dengan ID produk yang ingin Anda hapus: http://127.0.0.1:8000/delete-product/1.

  3. Pilih metode DELETE.

  4. Klik tombol "Send" untuk mengirim permintaan DELETE ke endpoint tersebut.

Pastikan untuk mengganti data sesuai dengan kebutuhan aplikasi Anda, dan pastikan server lokal Anda berjalan saat mengirim permintaan ini. Semoga ini membantu!

Di bab berikutnya akan belajar cara membuat auth dengan laravel bootstrap Scaffolding di project yang telah dibuat.

Last updated