Membuat Restful API Sederhana

Rabu, 21 Januari 2026 02:32 siang
Ami Arief
Artikel
Views 13

Data-data sektoral yang terpencar pada aneka OPD, Unor, dalam wujud spreadsheet, SiLo data, tak ayal mengakibatkan panjangnya proses birokrasi dan tata naskah untuk pertukaran data, baik lintas sektoral maupun lintas jenjang pemerintahan konkuren. Secara teori, ini hanyalah teks yang menerangkan suatu permasalahan, namun secara praktikal ini adalah masalah yang tidak menunjang kebutuhan dan ekspektasi tuntutan era disrupsi teknologi. Pertukaran data secara praktikal telah dapat dilakukan lebih dinamis dengan teknologi Application Programming Interface (API), untuk itu tulisan ini ada untuk memberikan pandangan terkait konsep dasar API dengan serangkaian praktik dengan requirement yang sederhana.

 

Tujuan

  • memudahkan kolaborasi/interoperabilitas (INA Digital, SPL-IPPD, SIA, Super App Provinsi, Dashboard Kutim, Satu Data Kutim, SiLo Data Lainnya)

Requirement

  • [env] web server
  • [app] laravel project, db: blog, table: blog, atribut: judul, isi, created_at, updated_at, deleted_at
  • [tools] VSCode + REST Client
  • [helper] opsional, Chat Bot (Copilot pada Ms. Edge/Gemini/ChatGPT/Meta AI, dsb)

Langkah-langkah

Langkah 1. Persiapan Project

  • buat project Laravel baru

laravel new blog

atau

composer create-project laravel/laravel blog

  • konfigurasi database di file .env

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=blog
DB_USERNAME=root
DB_PASSWORD=

Langkah 2. Membuat Migration

  • jalankan perintah

php artisan make:migration create_blogs_table

  • edit file migration di database/migration/…create_blogs_table.php

public function up()
{
Schema::create('blogs', function (Blueprint $table) {
$table->id();
$table->string('judul');
$table->text('isi');
$table->timestamps(); // otomatis buat created_at & updated_at
$table->softDeletes(); // otomatis buat deleted_at
});
}

  • lalu jalankan

php artisan migrate

Langkah 3. Membuat Model

php artisan make:model Blog

  • edit app/Models/Blog.php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

class Blog extends Model
{
use SoftDeletes;

protected $fillable = ['judul', 'isi'];
}

Langkah 4. Membuat Controller

php artisan make:controller BlogController --api

  • edit app/Http/Controllers/BlogController.php

namespace App\Http\Controllers;

use App\Models\Blog;
use Illuminate\Http\Request;

class BlogController extends Controller
{
// GET /api/blogs
public function index()
{
return Blog::all();
}

// POST /api/blogs
public function store(Request $request)
{
$validated = $request->validate([
'judul' => 'required|string|max:255',
'isi' => 'required|string',
]);

$blog = Blog::create($validated);
return response()->json($blog, 201);
}

// GET /api/blogs/{id}
public function show($id)
{
return Blog::findOrFail($id);
}

// PUT /api/blogs/{id}
public function update(Request $request, $id)
{
$blog = Blog::findOrFail($id);
$blog->update($request->only(['judul', 'isi']));
return response()->json($blog, 200);
}

// DELETE /api/blogs/{id}
public function destroy($id)
{
$blog = Blog::findOrFail($id);
$blog->delete();
return response()->json(null, 204);
}
}

Langkah 5. Definisikan Route

  • edit routes/api.php

use App\Http\Controllers\BlogController;

Route::apiResource('blogs', BlogController::class);

Langkah 6. Uji API

Gunakan REST Client (Ctrl+Shift+X dan install pada VSCode, setelahnya restart VSCode untuk dampak yang diharapkan), atau Postman atau cURL

  • GET /api/blogs : ambil semua blog
  • POST /api/blogs : blog buat baru

{
"judul": "Belajar Laravel",
"isi": "Ini adalah isi blog pertama."
}

  • GET /api/blogs/1 : ambil blog dengan ID 1
  • PUT /api/blogs/1 : update blog
  • DELETE /api/blogs/1 : hapus blog (soft delete)

Sample kode jika menggunakan REST Client (/tests/api.php)

### Ambil semua blog
GET http://localhost:8000/api/blogs

### Buat blog baru
POST http://localhost:8000/api/blogs
Content-Type: application/json

{
"judul": "Belajar Laravel",
"isi": "Ini adalah isi blog pertama."
}

### Ambil blog dengan ID tertentu
GET http://localhost:8000/api/blogs/1

### Update blog
PUT http://localhost:8000/api/blogs/1
Content-Type: application/json

{
"judul": "Update Judul",
"isi": "Update isi blog."
}

### Hapus blog
DELETE http://localhost:8000/api/blogs/1

  • Setiap blok akan muncul tombol namun bentuknya hanya teks Send Request. Klik tombol untuk mendapatkan respons. Contoh letak tombol

### Ambil semua blog
Send Request
GET http://localhost:8000/api/blogs

Catatan Tambahan

  • karena menggunakan SoftDeletes, data tidak benar-benar hilang, hanya diberi deleted_at
  • jika ingin menampilkan data termasuk yang terhapus, gunakan

Blog::withTrashed()->get();

  • untuk mengembalikan data yang terhapus

Blog::withTrashed()->find($id)->restore();

Tags:
application programming interface restful membuat api sederhana basic