Source Code Project: https://github.com/SitiFadhilahRahmi/API-Project-Laravel_PWEB.git
SETUP PROJECT
Pertama buat project laravel baru, bisa melalui command prompt atau cmder, atau sejenisnya
Masukkan perintah:
composer create-project laravel/laravel api-project
Dan tunggu hingga project selesai dibuat

Selanjutnya masuk ke folder project dengan perintah
cd api-project
Lalu jalankan project dengan perintah
php artisan serve

DATABASE DAN MIGRATION
Selanjutnya adalah menyiapkan database. Buka folder project di vscode atau code editor lainnya. Lalu buka terminal dan masukkan perintah php artisan make:migration create_products_table untuk membuat table migrasi. Jika sudah maka akan terbuat file database\migrations\2025_06_17_080823_create_products_table.php.

Edit file tersebut menjadi:

Lalu jalankan migrationnya dengan perintah php artisan migrate pada terminal
MODEL
Jalankan perintah php artisan make:model Product untuk membuat file model baru bernama Product.php di direktori app/Models. Sesuaikan Produck.php seperti berikut:

API ROUTES
Buat file api.php pada folder routes.

API CONTROLLER
Gunakan perintah php artisan make:controller ProductController –api untuk membuat controllernya. Filenya akan berada di folder app\Http\Controllers\ProductController.php.
Sesuaikan file tersebut dengan:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Product;
class ProductController extends Controller
{
public function index()
{
$products = Product::all();
return response()->json([
‘status’ => ‘success’,
‘data’ => $products
]);
}
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([
‘status’ => ‘success’,
‘message’ => ‘Product created successfully’,
‘data’ => $product
], 201);
}
public function show(Product $product)
{
return response()->json([
‘status’ => ‘success’,
‘data’ => $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([
‘status’ => ‘success’,
‘message’ => ‘Product updated successfully’,
‘data’ => $product
]);
}
public function destroy(Product $product)
{
$product->delete();
return response()->json([
‘status’ => ‘success’,
‘message’ => ‘Product deleted successfully’
]);
}
}
API RESOURCES (DATA TRANSFORMATION)
API Resource berfungsi sebagai layer transformasi antara model Eloquent dan JSON response yang dikirim ke client sehingga dapat digunakan untuk Mengontrol format output JSON, Menyembunyikan field sensitive, Menambahkan field computed dan Membuat response yang konsisten.
Buat resource menggunakan command php artisan make:resource ProductResource
File resource akan berada pada // app/Http/Resources/ProductResource.php. Lalu sesuaikan file:

Ubah method index dan show menggunakan API Resource pada ProductController.php dan jangan lupa untuk import ProductResource menggunakan use.

ROUTESERVICEPROVIDER
Buat provider baru dengan command php artisan make:provider RouteServiceProvider yang akan digunakan untuk mendaftarkan file routing api.php
Lalu sesuaikan dengan code:

VALIDASI DAN ERROR HANDLING
Buat Form Request Validation di Laravel digunakan untuk memisahkan dan mengorganisir logika validasi data input dari controller.
Buat menggunakan command php artisan make:request StoreProductRequest.
File akan berada pada app\Http\Requests\StoreProductRequest.php.
Sesuaikan dengan:
Implementasikan pada Method Store di file Product Controller dan jangan lupa untuk import StoreProductRequest.phpnya

Global Exception Handler
Global Exception Handler ini akan digunakan untuk menangkap dan menangani semua exception (kesalahan) yang terjadi di aplikasi secara terpusat.
Buat folder baru yaitu folder Exceptions di dalam folder app dan tambahkan file Handler.php

MENGAKSES API PRODUCTS DENGAN POSTMAN
Untuk melakukan pengujian menggunakan POSTMAN, download aplikasinya melalui website resmi POSTMAN dan langsung install

Buka aplikasinya lalu klik new dan pilih HTTP. Maka akan tampil untitled request baru di sampingnya.

GET – Mengambil Semua Products
Masukkan URL http://localhost:8000/products/ lalu send dan lihat hasilnya
Jika berhasil maka akan muncul Response 200 OK

POST – Membuat Product Baru

Akan muncul respon 201 Created jika data berhasil di POST.
GET – Mengambil Product Berdasarkan ID
URL: http://localhost:8000/products/{id}
Jika id nya 1, maka akan ditampilkan data dengan id 1

PUT – Update Product
URL: http://localhost:8000/products/{id}
Masukkan
{
“name”: “Laptop Gaming Updated”,
“description”: “Laptop gaming dengan spek tinggi dan SSD 1TB”,
“price”: 16500000.00,
“stock”: 8
}
Di bagian body, bagian raw terlebih dahulu lalu send. Jika berhasil:

DELETE – Hapus Product
URL: http://localhost:8000/products/{id}
