Membuat api dengan php

Pada tutorial sebelumnya kita telah membahas tentang REST API dan jika teman-teman telah membaca dan membuat script di postingan tersebut maka akan diperolah pemahaman tentang dasar rest api dan latihan project rest api sederhana menggunakan PHP Native dan MySQL database.

Tutorial belajar Rest API ini masih menggunakan PHP dan MySQL. Dapat dikatakan Ini adalah lanjutan dari tutorial rest api sebelumnya namun script php yang digunakan untuk membuat rest api ini berbentuk object oriented programming.

Sebagai pengguna PHP tentu kita tahu bahwa di php kita bisa menggunkan pendekatan prosedural dan object oriented dalam mengembangkan scirpt.

Nah Langsung Saja…

Langkah Pembuatan File Rest Api

Di bawah ini mari kita selesaikan pembuatan file php menggunakan pendekatan OOP untuk membuat REST API.

1. Siapkan database

Buatlah terlebih dahulu database. (boleh digunakan database yang sudah ada). Pada contoh ini menggunakan database indonetsource sebagai..

2. Buatlah tabel mahasiswa di database seperti di bawah ini.

CREATE TABLE `tbl_mahasiswa` (
 `nim` varchar(8) NOT NULL,
 `nama` varchar(30) NOT NULL,
 `jenis_kelamin` enum(‘Laki-laki’,’Perempuan’) NOT NULL,
 `tempat_lahir` varchar(20) NOT NULL,
 `tanggal_lahir` date NOT NULL,
 `alamat` text NOT NULL,
 PRIMARY KEY (`nim`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

Tabel ini adalah tabel yang akan diakses datanya nanti oleh client.

3. Mempersiapkan file PHP

Membuat directory project.

Jika menggunakan wampp maka buatlah project pada directory www. Namun jika menggunakan xampp maka dibuat pada folder htdocs.

Nama project yang digunakan adalah restapiphp

struktur folder project.

restapiphp
|---- dbconfig
|---- database.php
|---- objects
|---- delete_mhs.php
|---- get_byNim.php
|---- get_mhs.php
|---- input_mhs.php
|---- mahasiswa.php
|---- update.php

dbconfig

database.php

<?php
class Database{
  
    // specify your own database credentials
    private $host = "localhost";
    private $db_name = "indonetsource";
    private $username = "root";
    private $password = "";
    public $conn;
  
    // get the database connection
    public function koneksi(){
        $this->conn = null;  
        try{            
            $this->conn = new PDO("mysql:host=" . $this->host . ";dbname=" . $this->db_name, $this->username, $this->password);
            $this->conn->exec("set names utf8");
        }catch(PDOException $exception){
            echo "Connection error: " . $exception->getMessage();
        }
  
        return $this->conn;
    }
}
?>

selanjutnya membuat file objects.

Object

Object dari program rest api yang kita buat adalah mahasiswa. Mahasiswa sebagai object data/atributnya akan dilakukan manipulasi seperti create,read,update dan delete. Dalam pengembangan versi oop ini sebaiknya pahami terlebih dahulu apa itu oop.

Keseluruhan proses ini kita buatkan methodnya di file mahasiswa.php. Masing-masing method inilah yang akan dipanggil nanti oleh file yang bertugas melakukan crud.

mahasiswa.php

<?php

class Mahasiswa{
    
    public $nim;
    public $nama;
    public $jenis_kelamin;
    public $tempat_lahir;
    public $tanggal_lahir;    
    public $alamat;

    private $kon;
    private $tabel = "tbl_mahasiswa";
      
    public function __construct($dbname){
        $this->kon = $dbname;
    }

    //Get Semua data Mahasiswa
    function get_mhs()
    {
        $query = "SELECT * FROM " . $this->tabel . "";        
        $stmt = $this->kon->prepare($query);        
        $stmt->execute();
        return $stmt;
    }

    //fungsi get mahasiswa by nim
    function get_byNim()
    {
        $query = "SELECT * FROM " . $this->tabel . " m          
                WHERE
                    m.nim = ?
                LIMIT
                0,1";

        $stmt = $this->kon->prepare($query);
        $stmt->bindParam(1, $this->nim);
        
        $stmt->execute();
        $row = $stmt->fetch(PDO::FETCH_ASSOC);

        // memasukkan nilai ke object      
        $this->nama = $row['nama'];
        $this->tempat_lahir = $row['tempat_lahir'];
        $this->jenis_kelamin = $row['jenis_kelamin'];
        $this->tanggal_lahir = $row['tanggal_lahir'];
        $this->alamat = $row['alamat'];
    }
    
    //fungsi input data mahasiswa
    function input_mhs()
    {        
        $query = "INSERT INTO
                " . $this->tabel . "
            SET
               nim=:nim, nama=:nama, jenis_kelamin=:jenis_kelamin, 
               tempat_lahir=:tempat_lahir, tanggal_lahir=:tanggal_lahir, 
               alamat=:alamat";

        $stmt = $this->kon->prepare($query);     
        $stmt->bindParam('nim', $this->nim);
        $stmt->bindParam('nama', $this->nama);
        $stmt->bindParam('jenis_kelamin', $this->jenis_kelamin);
        $stmt->bindParam('tempat_lahir', $this->tempat_lahir);
        $stmt->bindParam('tanggal_lahir', $this->tanggal_lahir);
        $stmt->bindParam('alamat', $this->alamat);
        
        if ($stmt->execute()) {
            return true;
        }
        return false;
    }

    //fungsi updete data mahasiswa
    function update_mhs()
    {        
        $query = "UPDATE
                " . $this->tabel . "
            SET
                nama = :nama,
                tempat_lahir = :tempat_lahir,
                jenis_kelamin = :jenis_kelamin,
                tanggal_lahir = :tanggal_lahir,
                alamat = :alamat
            WHERE
                nim = :nim";
        
        $stmt = $this->kon->prepare($query);

        $stmt->bindParam('nama', $this->nama);
        $stmt->bindParam('tempat_lahir', $this->tempat_lahir);
        $stmt->bindParam('jenis_kelamin', $this->jenis_kelamin);
        $stmt->bindParam('tanggal_lahir', $this->tanggal_lahir);
        $stmt->bindParam('alamat', $this->alamat);
        $stmt->bindParam('nim', $this->nim);
        
        if ($stmt->execute()) {
            return true;
        }

        return false;
    }

    //fungsi delete mahasiswa
    function delete_mhs()
    {        
        $query = "DELETE FROM " . $this->tabel . " WHERE nim = ?";        
        $stmt = $this->kon->prepare($query);
        $stmt->bindParam(1, $this->nim);    
        
        if ($stmt->execute()) {
            return true;
        }
        return false;
    }
}
?>

Selanjutnya kita memerlukan pemanggilan terhadap method di atas. File lengkap dapat di lihat di github indonetsource .

Setelah mempersiapkan ke semua file di atas, silahkan lakukan uji coba CRUD menggunkan postman.

Hasil Testing Rest Api Pada Postman.

1. Get Semua data Mahasiswa

http://localhost/restapiphp/objects/get_mhs.php

Membuat api dengan php
Get Semua data Mahasiswa

2. GET Mahasiswa By Nim

http://localhost/restapiphp/objects/get_byNim.php?nim=20210003

Membuat api dengan php
Get Mahasiswa By Nim

3. Input Mahasiswa

Untuk input kita gunakan format raw pada menu body dan send data ke url

http://localhost/restapiphp/objects/input_mhs.php

Membuat api dengan php
Input Mahasiswa

Respon saat input failed

Membuat api dengan php
Respon failed

input sukses

Membuat api dengan php
Respone success

4. Update Mahasiswa

http://localhost/restapiphp/objects/update_mhs.php

Membuat api dengan php
Rest Update

5. Delete Mahasiswa

http://localhost/restapiphp/objects/delete_mhs.php

Membuat api dengan php
Rest Delete Mahasiswa

Penutup…

Itulah keseluruhan file yang harus kita selesaikan dalam tutorial belajar rest api ini. Teman-teman dapat membuat dan menggembangkan sendiri setelah mencoba membuat file rest di atas.

Apa itu Flask api?

Flask sendiri adalah sebuah microframework yang dapat digunakan dalam pembuatan web dengan bahasa pemrograman Python. Apabila Python belum terpasang, maka download Python lalu install di komputer. Buat virtual environment di komputer dengan membuka shell (command prompt) terlebih dahulu.

Apa yang dimaksud dengan REST API?

API RESTful adalah antarmuka yang digunakan oleh dua sistem komputer untuk bertukar informasi secara aman melalui internet. Sebagian besar aplikasi bisnis harus berkomunikasi dengan aplikasi internal dan pihak ketiga lainnya untuk melakukan berbagai tugas.

REST API tidak dapat menyimpan status apa pun terkait client?

REST API tidak boleh menyimpan keadaan (state) apapun terkait client. Seluruh state harus tetap disimpan di client. Artinya, tidak ada session di REST API. Permintaan yang dilakukan client harus mengandung informasi yang jelas.