Membuat REST API dengan PHP bisa dilakukan tanpa framework, cukup dengan memanfaatkan fitur bawaan seperti header, JSON encode, dan routing sederhana. Panduan ini memandu Anda menyiapkan struktur proyek hingga menguji endpoint, sekaligus membandingkan pendekatan native dan penggunaan framework ringan.

Persiapan Awal: Struktur Proyek dan Lingkungan

Sebelum menulis kode, siapkan folder proyek dan pastikan PHP sudah terpasang di server lokal. Gunakan PHP versi 7.4 atau lebih baru untuk mendukung typed properties dan arrow functions. Buat struktur direktori sederhana seperti api/ untuk menyimpan file endpoint, config/ untuk koneksi database, dan index.php sebagai front controller.

Aktifkan modul mod_rewrite jika menggunakan Apache, atau jalankan server bawaan PHP dengan perintah php -S localhost:8000. Untuk pengujian, siapkan tools seperti Postman atau curl untuk mengirim request HTTP.

Membuat Routing Sederhana untuk Endpoint API

Routing memetakan URL dan metode HTTP ke fungsi atau file yang sesuai. Pendekatan paling dasar memakai $_SERVER['REQUEST_URI'] dan $_SERVER['REQUEST_METHOD'] untuk menentukan aksi.

Contoh routing minimalis:

$method = $_SERVER['REQUEST_METHOD'];
$path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);

switch ("$method $path") {
    case 'GET /users':
        require 'api/users/index.php';
        break;
    case 'POST /users':
        require 'api/users/create.php';
        break;
    default:
        http_response_code(404);
        echo json_encode(['error' => 'Not Found']);
}

Untuk aplikasi yang lebih kompleks, pertimbangkan router library seperti FastRoute atau framework ringan seperti Slim. Framework menyediakan middleware, dependency injection, dan error handling yang lebih rapi. Routing manual tetap berguna untuk memahami cara kerja HTTP.

Menangani Request dan Validasi Input

Setiap endpoint perlu membaca input dari pengguna, baik dari query string, body JSON, atau form data. Gunakan file_get_contents('php://input') untuk mengambil body request, lalu decode JSON dengan json_decode().

Validasi input mencegah data yang tidak valid masuk ke database. Anda bisa melakukan validasi manual dengan mengecek tipe data, panjang string, atau format email. Untuk pendekatan yang lebih terstruktur, Anda bisa mengikuti panduan 7 cara validasi data PHP tanpa framework yang membahas berbagai teknik validasi.

Jika API Anda menerima data dari form HTML, pahami juga cara menangani form input di PHP untuk pemula agar integrasi antara frontend dan backend berjalan lancar.

Mengirim Respons JSON yang Konsisten

REST API umumnya mengembalikan data dalam format JSON. Pastikan setiap respons memiliki struktur yang konsisten, misalnya selalu menyertakan kunci status, data, dan message jika diperlukan. Set header Content-Type: application/json sebelum mengirim output.

Gunakan fungsi pembantu untuk membungkus respons:

function sendResponse($data, $status = 200) {
    http_response_code($status);
    header('Content-Type: application/json');
    echo json_encode($data);
    exit;
}

Untuk error, sertakan kode status HTTP yang sesuai, seperti 400 untuk bad request, 404 untuk not found, atau 500 untuk server error. Klien jadi tahu apa yang terjadi dari kode itu.

Koneksi ke Database dan Operasi CRUD

API biasanya terhubung ke database untuk menyimpan dan mengambil data. Gunakan PDO atau MySQLi dengan prepared statements untuk mencegah SQL injection. Jika Anda baru memulai, artikel cara menghubungkan PHP ke MySQL dengan PDO dan MySQLi dapat menjadi referensi.

Untuk operasi CRUD, buat file terpisah untuk setiap endpoint atau gunakan satu file dengan switch berdasarkan metode HTTP. Contoh sederhana endpoint GET /users:

$stmt = $pdo->query('SELECT * FROM users');
$users = $stmt->fetchAll(PDO::FETCH_ASSOC);
sendResponse(['data' => $users]);

Tangani error koneksi dan query dengan try-catch, lalu kirim respons error yang informatif tanpa membocorkan detail sensitif.

Keamanan Dasar untuk REST API

Terapkan otentikasi menggunakan API key, token JWT, atau OAuth tergantung kebutuhan. Untuk API sederhana, API key yang dikirim melalui header Authorization sudah cukup.

Selalu gunakan HTTPS untuk mengenkripsi data. Batasi akses ke endpoint tertentu berdasarkan peran pengguna, dan terapkan rate limiting untuk mencegah penyalahgunaan. Jika Anda ingin membandingkan pendekatan session vs token, baca mengelola session PHP vs token JWT.

Saat pengembangan, Anda sering perlu membuat antarmuka interaktif untuk menguji API. Anda bisa membuat daftar tugas interaktif dengan jQuery seperti yang dijelaskan di Membuat Daftar Tugas Interaktif dengan jQuery untuk memvisualisasikan respons API.

Menguji API dengan Postman dan Curl

Setelah endpoint selesai, uji setiap metode HTTP. Gunakan Postman untuk mengirim request GET, POST, PUT, DELETE dan periksa respons. Pastikan status code dan body sesuai harapan. Untuk otomatisasi, tulis skrip pengujian menggunakan curl atau tools seperti PHPUnit dengan Guzzle.

Contoh pengujian dengan curl:

curl -X GET http://localhost:8000/users

Perhatikan juga header yang dikirim dan diterima. Jika ada masalah, periksa log error PHP dan pastikan tidak ada output sebelum header dikirim.

Membandingkan Pendekatan: Native vs Framework

Membuat REST API dengan PHP native memberikan kontrol penuh dan pemahaman mendalam tentang HTTP. Untuk proyek yang lebih besar, framework seperti Laravel, Lumen, atau Slim menawarkan fitur siap pakai seperti routing, middleware, dan ORM yang mempercepat pengembangan.

  • Native: Cocok untuk pembelajaran, API sederhana, atau proyek dengan kebutuhan khusus. Anda harus menulis banyak kode boilerplate.
  • Microframework (Slim, Lumen): Ringan, menyediakan routing dan middleware, cocok untuk API dengan kompleksitas sedang.
  • Full framework (Laravel): Fitur lengkap, termasuk ORM Eloquent, validasi, dan autentikasi. Cocok untuk aplikasi besar dengan tim.

Pilihan tergantung pada skala proyek dan pengalaman tim. Pemula sebaiknya memulai dengan native lalu beralih ke framework. Jika Anda ingin memperdalam dasar-dasar pemrograman web, ada baiknya membaca Tips Praktis Memulai Kode PHP, JS, dan CSS untuk Pemula.

Dalam mengembangkan API, pastikan Anda mengikuti perkembangan berita teknologi terbaru dari sumber terpercaya seperti indowarta yang menyajikan informasi berbasis fakta dan ditulis oleh penulis berpengalaman.

Ringkasan

Membuat REST API dengan PHP melibatkan routing, handling request, validasi, respons JSON, koneksi database, dan keamanan. Anda bisa memulai dengan pendekatan native untuk memahami konsep, lalu beralih ke framework untuk efisiensi. Uji setiap endpoint dan terapkan praktik keamanan dasar.

Pertanyaan yang Sering Diajukan

Apakah perlu menggunakan framework untuk membuat REST API dengan PHP?

Tidak wajib. Untuk API sederhana, PHP native sudah cukup. Framework membantu untuk proyek yang lebih besar dengan fitur seperti routing, middleware, dan ORM.

Bagaimana cara mengamankan REST API dari akses tidak sah?

Gunakan otentikasi seperti API key atau JWT, terapkan HTTPS, dan batasi akses berdasarkan peran. Jangan lupa validasi input dan gunakan prepared statements.

Format respons apa yang sebaiknya digunakan?

JSON adalah format standar untuk REST API karena ringan dan mudah diproses oleh berbagai bahasa pemrograman. Pastikan struktur konsisten dan sertakan kode status HTTP yang tepat.