Membuat RESTful API Dengan PHP Tanpa Framework

Diposting oleh Chandra pada Android & Db

Pada artikel ini, kita akan membahas tentang cara membuat RESTful API dengan PHP tanpa menggunakan framework apapun. RESTful API adalah suatu jenis API yang menggunakan metode HTTP seperti GET, POST, PUT, dan DELETE untuk melakukan operasi CRUD (Create, Read, Update, Delete) terhadap data.

Mengapa Membuat RESTful API Tanpa Framework?

Mungkin Anda bertanya-tanya, mengapa kita harus membuat RESTful API tanpa framework? Jawabannya adalah:

  • Keseluruhan Kontrol: Dengan tidak menggunakan framework, kita memiliki kontrol penuh atas kode yang kita tulis. Kita tidak harus terikat dengan struktur dan pola yang telah ditentukan oleh framework.
  • Kemudahan Integrasi: RESTful API dapat diintegrasikan dengan mudah dengan aplikasi lain, tidak peduli bahasa pemrograman apa yang digunakan.
  • Kemampuan Skalabilitas: Dengan tidak menggunakan framework, kita dapat membuat RESTful API yang lebih skalabel dan dapat berjalan di lingkungan yang berbeda-beda.

Membuat RESTful API dengan PHP

Sebelum kita mulai membuat RESTful API, pastikan Anda memiliki PHP yang terinstal di komputer Anda. Berikut adalah langkah-langkah untuk membuat RESTful API dengan PHP:

Membuat RESTful API dengan PHP Tanpa Framework

Langkah 1: Membuat Struktur Proyek

Buatlah direktori baru untuk proyek Anda, misalnya rest-api. Dalam direktori tersebut, buatlah beberapa file dan direktori berikut:

  • index.php
  • config.php
  • Membuat RESTful API dengan PHP Tanpa Framework

  • models/
  • controllers/
  • routes/

Langkah 2: Membuat Konfigurasi Database

Membuat RESTful API dengan PHP Tanpa Framework

Buatlah file config.php untuk menyimpan konfigurasi database Anda.

// config.php
define('DB_HOST', 'localhost');
define('DB_USERNAME', 'username');
define('DB_PASSWORD', 'password');
define('DB_NAME', 'database_name');

$koneksi = new mysqli(DB_HOST, DB_USERNAME, DB_PASSWORD, DB_NAME);

if ($koneksi->connect_error) 
    die("Koneksi gagal: " . $koneksi->connect_error);

Langkah 3: Membuat Model

Buatlah file User.php dalam direktori models/ untuk membuat model pengguna.

// models/User.php
class User 
    private $koneksi;

    public function __construct($koneksi) 
        $this->koneksi = $koneksi;
    

    public function getAllUsers() 
        $query = "SELECT * FROM users";
        $result = $this->koneksi->query($query);

        if (!$result) 
            die("Query gagal: " . $this->koneksi->error);
        

        $users = array();
        while ($row = $result->fetch_assoc()) 
            $users[] = $row;
        

        return $users;
    

    public function getUserById($id) 
        $query = "SELECT * FROM users WHERE id = '$id'";
        $result = $this->koneksi->query($query);

        if (!$result) 
            die("Query gagal: " . $this->koneksi->error);
        

        $user = $result->fetch_assoc();
        return $user;
    

    public function createUser($name, $email) 
        $query = "INSERT INTO users (name, email) VALUES ('$name', '$email')";
        $result = $this->koneksi->query($query);

        if (!$result) 
            die("Query gagal: " . $this->koneksi->error);
        

        return array('message' => 'Pengguna berhasil dibuat');
    

    public function updateUser($id, $name, $email) 
        $query = "UPDATE users SET name = '$name', email = '$email' WHERE id = '$id'";
        $result = $this->koneksi->query($query);

        if (!$result) 
            die("Query gagal: " . $this->koneksi->error);
        

        return array('message' => 'Pengguna berhasil diupdate');
    

    public function deleteUser($id) 
        $query = "DELETE FROM users WHERE id = '$id'";
        $result = $this->koneksi->query($query);

        if (!$result) 
            die("Query gagal: " . $this->koneksi->error);
        

        return array('message' => 'Pengguna berhasil dihapus');
    

Langkah 4: Membuat Controller

Buatlah file UserController.php dalam direktori controllers/ untuk membuat controller pengguna.

// controllers/UserController.php
class UserController 
    private $user;

    public function __construct($koneksi) 
        $this->user = new User($koneksi);
    

    public function getAllUsers() 
        return $this->user->getAllUsers();
    

    public function getUserById($id) 
        return $this->user->getUserById($id);
    

    public function createUser($name, $email) 
        return $this->user->createUser($name, $email);
    

    public function updateUser($id, $name, $email) 
        return $this->user->updateUser($id, $name, $email);
    

    public function deleteUser($id) 
        return $this->user->deleteUser($id);
    

Langkah 5: Membuat Rute

Buatlah file routes.php untuk membuat rute API.

// routes.php
$routes = array(
    'GET /users' => 'UserController::getAllUsers',
    'GET /users/:id' => 'UserController::getUserById',
    'POST /users' => 'UserController::createUser',
    'PUT /users/:id' => 'UserController::updateUser',
    'DELETE /users/:id' => 'UserController::deleteUser'
);

Langkah 6: Membuat Index

Buatlah file index.php untuk membuat index API.

// index.php
require_once 'config.php';
require_once 'models/User.php';
require_once 'controllers/UserController.php';
require_once 'routes.php';

$koneksi = new mysqli(DB_HOST, DB_USERNAME, DB_PASSWORD, DB_NAME);

if ($koneksi->connect_error) 
    die("Koneksi gagal: " . $koneksi->connect_error);


$userController = new UserController($koneksi);

$uri = $_SERVER['REQUEST_URI'];
$method = $_SERVER['REQUEST_METHOD'];

foreach ($routes as $route => $function) 
    $routeParts = explode('/', $route);
    $uriParts = explode('/', $uri);

    if ($routeParts[0] == $uriParts[0] && $routeParts[1] == $uriParts[1] && $method == 'GET') 
        if (count($routeParts) == 3) 
            $id = $uriParts[2];
            echo json_encode($userController->$function($id));
         else 
            echo json_encode($userController->$function());
        
     elseif ($routeParts[0] == $uriParts[0] && $method == 'POST') 
        $name = $_POST['name'];
        $email = $_POST['email'];
        echo json_encode($userController->$function($name, $email));
     elseif ($routeParts[0] == $uriParts[0] && $method == 'PUT') 
        $id = $uriParts[2];
        $name = $_POST['name'];
        $email = $_POST['email'];
        echo json_encode($userController->$function($id, $name, $email));
     elseif ($routeParts[0] == $uriParts[0] && $method == 'DELETE') 
        $id = $uriParts[2];
        echo json_encode($userController->$function($id));
    

Menguji RESTful API

Untuk menguji RESTful API, kita dapat menggunakan alat seperti Postman atau curl. Berikut adalah contoh cara menguji RESTful API menggunakan curl:

  • GET /users: curl -X GET http://localhost/rest-api/index.php/users
  • GET /users/:id: curl -X GET http://localhost/rest-api/index.php/users/1
  • POST /users: curl -X POST -H "Content-Type: application/json" -d '"name":"John Doe","email":"john@example.com"' http://localhost/rest-api/index.php/users
  • PUT /users/:id: curl -X PUT -H "Content-Type: application/json" -d '"name":"Jane Doe","email":"jane@example.com"' http://localhost/rest-api/index.php/users/1
  • DELETE /users/:id: curl -X DELETE http://localhost/rest-api/index.php/users/1

Dengan demikian, kita telah berhasil membuat RESTful API dengan PHP tanpa menggunakan framework.

Membuat RESTful API dengan PHP Tanpa Framework

Video mengenai Membuat RESTful API dengan PHP Tanpa Framework