Membuat Endpoint API Untuk Operasi CRUD Menggunakan PHP Native
Dalam pembangunan aplikasi web modern, API (Application Programming Interface) memainkan peran penting sebagai sarana komunikasi antara aplikasi dan server. Salah satu jenis API yang paling umum digunakan adalah RESTful API, yang menggunakan metode HTTP untuk melakukan operasi CRUD (Create, Read, Update, Delete). Pada artikel ini, kita akan membahas cara membuat endpoint API untuk operasi CRUD menggunakan PHP native.
Mengapa Memilih PHP Native?
PHP adalah bahasa pemrograman yang populer dan luas digunakan dalam pembangunan aplikasi web. PHP native menyediakan kemampuan untuk membuat API dengan mudah dan efisien tanpa harus menggunakan framework atau library tambahan. Selain itu, PHP native juga memungkinkan kita untuk memiliki kontrol penuh atas kode dan dapat dimodifikasi sesuai dengan kebutuhan.
Mengatur Struktur Direktori
Sebelum memulai membuat endpoint API, kita perlu mengatur struktur direktori yang tepat. Berikut adalah contoh struktur direktori yang dapat digunakan:
project/
|____config/
| |____database.php
|____controllers/
| |____UserController.php
|____models/
| |____UserModel.php
|____routes/
| |____api.php
|____index.php
Membuat Koneksi Database
Pertama-tama, kita perlu membuat koneksi database menggunakan PHP. Pada contoh ini, kita akan menggunakan MySQL sebagai database.
// config/database.php
<?php
$host = 'localhost';
$dbname = 'database';
$username = 'root';
$password = '';
$dsn = "mysql:host=$host;dbname=$dbname";
try
$conn = new PDO($dsn, $username, $password);
catch (PDOException $e)
die("Gagal Koneksi: " . $e->getMessage());
function executeQuery($sql)
global $conn;
$stmt = $conn->prepare($sql);
$stmt->execute();
return $stmt;
Membuat Model
Model adalah representasi data dalam aplikasi kita. Pada contoh ini, kita akan membuat model untuk tabel users
.
// models/UserModel.php
<?php
class UserModel
private $conn;
public function __construct($conn)
$this->conn = $conn;
public function getAllUsers()
$sql = "SELECT * FROM users";
$stmt = executeQuery($sql);
$users = $stmt->fetchAll();
return $users;
public function getUserById($id)
$sql = "SELECT * FROM users WHERE id = :id";
$stmt = executeQuery($sql);
$stmt->bindParam(':id', $id);
$stmt->execute();
$user = $stmt->fetch();
return $user;
public function createUser($data)
$sql = "INSERT INTO users (name, email, password) VALUES (:name, :email, :password)";
$stmt = executeQuery($sql);
$stmt->bindParam(':name', $data['name']);
$stmt->bindParam(':email', $data['email']);
$stmt->bindParam(':password', $data['password']);
$stmt->execute();
return true;
public function updateUser($data, $id)
$sql = "UPDATE users SET name = :name, email = :email, password = :password WHERE id = :id";
$stmt = executeQuery($sql);
$stmt->bindParam(':name', $data['name']);
$stmt->bindParam(':email', $data['email']);
$stmt->bindParam(':password', $data['password']);
$stmt->bindParam(':id', $id);
$stmt->execute();
return true;
public function deleteUser($id)
$sql = "DELETE FROM users WHERE id = :id";
$stmt = executeQuery($sql);
$stmt->bindParam(':id', $id);
$stmt->execute();
return true;
Membuat Kontroler
Kontroler adalah bagian yang mengatur logika aplikasi kita. Pada contoh ini, kita akan membuat kontroler untuk mengelola data pengguna.
// controllers/UserController.php
<?php
class UserController
private $conn;
private $userModel;
public function __construct($conn)
$this->conn = $conn;
$this->userModel = new UserModel($conn);
public function getAllUsers()
$users = $this->userModel->getAllUsers();
return $users;
public function getUserById($id)
$user = $this->userModel->getUserById($id);
return $user;
public function createUser($data)
$result = $this->userModel->createUser($data);
return $result;
public function updateUser($data, $id)
$result = $this->userModel->updateUser($data, $id);
return $result;
public function deleteUser($id)
$result = $this->userModel->deleteUser($id);
return $result;
Membuat Endpoint API
Pertama-tama, kita perlu membuat endpoint API untuk operasi CRUD. Berikut adalah contoh endpoint API untuk operasi CRUD:
// routes/api.php
<?php
require_once 'config/database.php';
require_once 'controllers/UserController.php';
$conn = new PDO($dsn, $username, $password);
$userController = new UserController($conn);
$api = new RestApi($conn);
// Endpoint untuk operasi CRUD
$api->post('/users', function($req, $res) use ($userController)
$data = json_decode($req->getBody(), true);
$result = $userController->createUser($data);
return $res->json(['message' => 'Pengguna berhasil dibuat']);
);
$api->get('/users/id', function($req, $res) use ($userController)
$id = $req->getAttribute('id');
$user = $userController->getUserById($id);
return $res->json($user);
);
$api->put('/users/id', function($req, $res) use ($userController)
$id = $req->getAttribute('id');
$data = json_decode($req->getBody(), true);
$result = $userController->updateUser($data, $id);
return $res->json(['message' => 'Pengguna berhasil diperbarui']);
);
$api->delete('/users/id', function($req, $res) use ($userController)
$id = $req->getAttribute('id');
$result = $userController->deleteUser($id);
return $res->json(['message' => 'Pengguna berhasil dihapus']);
);
Menggunakan API
Setelah endpoint API telah dibuat, kita dapat menggunakannya dalam aplikasi kita. Berikut adalah contoh menggunakan API:
// index.php
<?php
require_once 'routes/api.php';
// Buat pengguna baru
$data = ['name' => 'John Doe', 'email' => 'john@example.com', 'password' => 'password123'];
$result = $api->post('/users', $data);
echo $result->getBody();
// Dapatkan pengguna dengan ID 1
$user = $api->get('/users/1');
echo $user->getBody();
// Perbarui pengguna dengan ID 1
$data = ['name' => 'Jane Doe', 'email' => 'jane@example.com', 'password' => 'password456'];
$result = $api->put('/users/1', $data);
echo $result->getBody();
// Hapus pengguna dengan ID 1
$result = $api->delete('/users/1');
echo $result->getBody();
Dengan demikian, kita telah berhasil membuat endpoint API untuk operasi CRUD menggunakan PHP native. Endpoint API ini dapat digunakan dalam aplikasi kita untuk mengelola data pengguna.