Pendahuluan
Laravel 9 adalah salah satu framework PHP paling populer yang memudahkan pengembangan aplikasi web, termasuk backend API untuk blog. Dalam panduan ini, Anda akan belajar langkah demi langkah membangun backend API blog yang lengkap, mulai dari instalasi, pembuatan model, controller, routing, hingga deployment.
Persiapan Lingkungan dan Instalasi Laravel 9
Sebelum memulai, pastikan Anda memiliki PHP versi 8.0 atau lebih tinggi, Composer, dan database MySQL atau PostgreSQL. Berikut langkah instalasi Laravel 9:
-
Install Composer dari
getcomposer.org
.
-
Buka terminal dan jalankan perintah:
composer create-project laravel/laravel blog-api "9.*"
-
Masuk ke folder proyek:
cd blog-api
-
Jalankan server development:
php artisan serve
Memahami Struktur Proyek Laravel
Laravel memiliki struktur folder yang terorganisir dengan baik. Berikut beberapa folder penting untuk backend API:
-
app/Models
: Tempat model Eloquent.
-
app/Http/Controllers
: Tempat controller API.
-
routes/api.php
: Tempat mendefinisikan routing API.
-
database/migrations
: Tempat file migrasi database.
Membuat Model dan Migrasi untuk Blog
Kita akan membuat model
Post
beserta migrasi untuk tabel posts.
php artisan make:model Post -m
Edit file migrasi di
database/migrations/xxxx_xx_xx_create_posts_table.php
:
public function up()
{
Schema::create('posts', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->text('content');
$table->string('author')->nullable();
$table->timestamps();
});
}
Jalankan migrasi:
php artisan migrate
Membuat Controller API
Buat controller API untuk mengelola data post:
php artisan make:controller Api/PostController --api
Contoh kode
PostController.php
:
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use App\Models\Post;
use Illuminate\Http\Request;
class PostController extends Controller
{
public function index()
{
return Post::all();
}
public function store(Request $request)
{
$validated = $request->validate([
'title' => 'required|string|max:255',
'content' => 'required|string',
'author' => 'nullable|string|max:100',
]);
$post = Post::create($validated);
return response()->json($post, 201);
}
public function show(Post $post)
{
return $post;
}
public function update(Request $request, Post $post)
{
$validated = $request->validate([
'title' => 'sometimes|required|string|max:255',
'content' => 'sometimes|required|string',
'author' => 'nullable|string|max:100',
]);
$post->update($validated);
return response()->json($post);
}
public function destroy(Post $post)
{
$post->delete();
return response()->json(null, 204);
}
}
Routing API di Laravel
Tambahkan routing resource di
routes/api.php
:
use App\Http\Controllers\Api\PostController;
Route::apiResource('posts', PostController::class);
Ini akan membuat endpoint API berikut:
-
GET /api/posts
- Menampilkan semua post
-
POST /api/posts
- Membuat post baru
-
GET /api/posts/{id}
- Menampilkan post tertentu
-
PUT/PATCH /api/posts/{id}
- Mengupdate post
-
DELETE /api/posts/{id}
- Menghapus post
Validasi Request dan Error Handling
Laravel menyediakan validasi request yang mudah digunakan. Contoh validasi sudah diterapkan di controller. Jika validasi gagal, Laravel otomatis mengembalikan response error 422 dengan pesan validasi.
Anda juga bisa membuat Form Request untuk validasi yang lebih rapi:
php artisan make:request StorePostRequest
Contoh isi
StorePostRequest.php
:
public function rules()
{
return [
'title' => 'required|string|max:255',
'content' => 'required|string',
'author' => 'nullable|string|max:100',
];
}
Autentikasi API dengan Sanctum
Untuk mengamankan API, gunakan Laravel Sanctum untuk autentikasi token:
-
Install Sanctum:
composer require laravel/sanctum
-
Publikasikan konfigurasi dan migrasi:
php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
-
Jalankan migrasi:
php artisan migrate
-
Tambahkan middleware Sanctum di
app/Http/Kernel.php
pada grup API.
-
Buat route login dan logout untuk mengelola token.
Testing API dengan PHPUnit
Laravel sudah terintegrasi dengan PHPUnit untuk testing. Contoh test sederhana untuk API post:
public function test_can_create_post()
{
$data = [
'title' => 'Judul Test',
'content' => 'Konten test untuk post.',
'author' => 'Tester',
];
$response = $this->postJson('/api/posts', $data);
$response->assertStatus(201)
->assertJsonFragment(['title' => 'Judul Test']);
}
Jalankan testing dengan perintah:
php artisan test
Deployment dan Tips Produksi
Setelah selesai, Anda bisa deploy aplikasi ke server produksi. Beberapa tips:
-
Gunakan environment file
.env
yang sesuai produksi.
-
Jalankan
php artisan config:cache
dan
php artisan route:cache
untuk optimasi.
-
Pastikan folder
storage
dan
bootstrap/cache
memiliki permission yang benar.
-
Gunakan HTTPS dan firewall untuk keamanan.
-
Backup database secara rutin.
Kesimpulan
Dengan mengikuti panduan ini, Anda telah membangun backend API blog menggunakan Laravel 9 secara lengkap. Anda memahami instalasi, struktur proyek, pembuatan model, controller, routing, validasi, autentikasi, testing, dan deployment. Selamat mencoba dan kembangkan aplikasi Anda lebih lanjut!