API ini dibangun menggunakan Laravel 12 dan menyediakan endpoint CRUD untuk artikel dan kategori, serta sistem autentikasi menggunakan JWT. Dokumentasi API dapat diakses melalui Swagger UI.
Project ini merupakan backend API sederhana yang menyediakan fitur:
- Registrasi dan login menggunakan JWT
- Manajemen artikel (create, read, update, delete)
- Manajemen kategori
- Pagination & search pada daftar artikel (10 data per halaman, pencarian berdasarkan title atau content)
- Dokumentasi API dengan Swagger
- Deployment API ke Railway: https://simple-article-api.up.railway.app/
- Clone repository
git clone https://github.com/lilcoderi/simple-article-api.git cd simple-article-api
- Install dependencies
composer install 
- Copy file .env
cp .env.example .env 
- Generate application key
php artisan key:generate 
- Konfigurasi database
Buka file .env, lalu ubah nilai konfigurasi database sesuai lokal Anda
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=simple_article_db DB_USERNAME=root DB_PASSWORD= 
- Migrasi dan seed database
php artisan migrate --seed 
- Generate JWT secret
php artisan jwt:secret 
- Jalankan server lokal
php artisan serve 
- Akses Swagger UI Setelah server berjalan, buka http://127.0.0.1:8000/api/documentation di browser untuk melihat dokumentasi Swagger.
API ini dapat diakses menggunakan Postman, baik secara lokal maupun melalui link yang sudah dideploy:
- Lokal: http://127.0.0.1:8000/api/
- Deploy: https://simple-article-api.up.railway.app/api/
- 
Register User - Method: POST
- URL: /register
- Body (JSON):
{ "name": "Riana", "email": "riana@example.com", "password": "secret123", }
 
- Method: 
- 
Login - Method: POST
- URL: /login
- Body (JSON):
{ "email": "riana@example.com", "password": "secret123" }
- Response: akan menerima access_token(JWT)
 
- Method: 
- 
Gunakan Token - Tambahkan Header:
Authorization: Bearer {access_token}
 
- Tambahkan Header:
- 
Akses Endpoint Lainnya - GET /articles(support pagination & search:?search=keyword&page=1)
- POST /articles(buat artikel baru)
- GET by id /articles/id(menampilkan detail artikel)
- PUT /articles/id(mengedit artikel)
- DELETE /articles/id(menghapus artikel)
- GET /categories(daftar kategori)
- POST /categories(buat kategori baru)
- PUT /categories/id(mengedit kategori)
- DELETE /categories/id(menghapus kategori)
 
- GET 
{
  "email": "riana@example.com",
  "password": "secret123"
}