Langkah Implementasi API CRUD
Persiapan Proyek Laravel
a. Buat Proyek Laravel Baru
Langkah pertama adalah membuat proyek Laravel baru melalui terminal atau CMD dengan perintah Composer.
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.
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.
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.
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',
];
Membuat Controller
a. Buat API Controller
Buat controller khusus untuk API dengan flag `--api` yang akan men-generate method-method CRUD secara otomatis.
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);
}
}
Mendefinisikan Rute API
Buka file `routes/api.php` dan daftarkan controller kita menggunakan `Route::apiResource`. Ini adalah cara cepat untuk membuat semua endpoint CRUD.
Setelah ini, jalankan `php artisan route:list` untuk melihat semua endpoint yang berhasil dibuat.
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`.
b. Get All Products (GET)
- Method: GET
- URL:
http://127.0.0.1:8000/api/products
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