Menampilkan data api dengan php

RESTful API / REST API merupakan implementasi dari API (Application Programming Interface). REST (Representional State Transfer) adalah suatu arsitektur metode komunikasi yang menggunakan protokol HTTP untuk pertukaran data dan metode ini sering diterapkan dalam pengembangan aplikasi. Dimana tujuannya adalah untuk menjadikan sistem yang memiliki performa yang baik, cepat dan mudah untuk di kembangkan (scale) terutama dalam pertukaran dan komunikasi data.

Rest API atau sering juga disebut dengan istilah API saja sering digunakan sebagai penghubung antara front–end dan back–end aplikasi. Front–end sendiri aplikasi interface yang digunakan user atau pengguna aplikasi. Contoh dari front-end aplikasi yaitu aplikasi android dan iOS. Back–end  aplikasi yang digunakan administrator untuk manajemen data. Sehingga dengan Rest API data dari front-end ke back-end ataupun sebaliknya dapat diolah seperti menampilkan, menambahkan, mengubah dan menghapus data.


RESTful API memiliki 4 komponen penting di dalamnya diantaranya adalah :

  1. URL Design
    RESTful API diakses menggunakan protokol HTTP. Penamaan dan struktur URL yang
    konsisten akan menghasilkan API yang baik dan mudah untuk dimengerti developer. URL
    API biasa disebut endpoint dalam pemanggilannya. Contoh penamaan URL / endpoint
    yang baik adalah seperti berikut:
    /users

    /users/1234
    /users/1234/photos
    /users/1234/photos/abc
  2. HTTP Verbs
    Setiap request yang dilakukan terdapat metode yang dipakai agar server mengerti apa
    yang sedang di request client, diantaranya yang umum dipakai adalah:

GET
GET adalah metode HTTP Request yang paling simpel, metode ini digunakan untuk membaca atau mendapatkan data dari sumber.
Contoh :
GET /users : Mengembalikan daftar user
GET /users/1234 : Mengembalikan data user dengan ID 1234
POST
POST adalah metode HTTP Request yang digunakan untuk membuat data baru dengan menyisipkan data dalam body saat request dilakukan.
Contoh :
POST /users : Membuat data user baru
PUT
PUT adalah metode HTTP Request yang biasanya digunakan untuk melakukan update data resource.
Contoh :
PUT /users/1234 : Mengupdate data user dengan ID 1234
DELETE
DELETE adalah metode HTTP Request yang digunakan untuk menghapus suatu data pada resource.
Contoh :
DELETE /users/1234 : Menghapus data user dengan ID 1234

Selain HTTP Verbs diatas, masih ada metode HEAD dan PATCH dalam HTTP Request, tetapi jarang sekali digunakan.

  1. HTTP Response Code
    HTTP response code adalah kode standarisasi dalam menginformasikan hasil request
    kepada client. Secara umum terdapat 3 kelompok yang biasa kita jumpai pada RESTful
    API yaitu:

– 2XX : adalah response code yang menampilkan bahwa request berhasil.
– 4XX : adalah response code yang menampilkan bahwa request mengalami kesalahan
pada sisi client.
– 5XX : adalah response code yang menampilkan bahwa request mengalami kesalahan
pada sisi server.

Dan berikut ini adalah response code yang biasa digunakan pada REST:


200 OK
Response code ini menandakan bahwa request yang dilakukan berhasil.


201 Created
Response code ini menandakan bahwa request yang dilakukan berhasil dan data telah
dibuat. Kode ini digunakan untuk mengkonfirmasi berhasilnya request PUT atau POST.


400 Bad Request
Response code ini menandakan bahwa request yang dibuat salah atau data yang dikirim
tidak ada.


401 Unauthorized
Response code ini menandakan bahwa request yang dibuat membutuhkan
authentication sebelum mengakses resource.


404 Not Found
Response Code ini menandakan bahwa resource yang di dipanggil tidak ditemukan.


405 Method Not Allowed
Response code ini menandakan bahwa request endpoint ada tetapi metode HTTP yang
digunakan tidak diizinkan.


409 Conflict
Response code ini menandakan bahwa request yang dibuat terdapat duplikasi, biasanya
informasi yang dikirim sudah ada sebelumnya.


500 Internal Server Error
Response code ini menandakan bahwa request yang dilakukan terdapat kesalahan pada
sisi server atau resource.

  1. Format Response
    Setiap request yang dilakukan client akan menerima data response dari server, response
    tersebut biasanya berupa data XML ataupun JSON. Setelah mendapatkan data response
    tersebut barulah client bisa menggunakannya dengan cara memparsing data tersebut dan diolah sesuai kebutuhan.
    Contoh:
    XML

    HTTP/1.1 200 OK
    Date: Sat, 06 Oct 2001 23:20:04 GMT
    Server: Apache.1.3.12 (Unix)
    Connection: close
    Content-Type: text/xml
    Content-Length: 124
<?xml version=”1.0″?>
<methodResponse>
<params>
<param>
<value><double>18.24668429131</double></value>
</param>
</params>
</methodResponse>

JSON
GET /users/1234
HTTP/1.1 200 OK
Content-Type: application/vnd.api+json

{
“id”: “1234”,
“first_name”: “jhon”,
“last_name”: “doe”,
“created”: “2015-05-22T14:56:29.000Z”,
“updated”: “2015-05-22T14:56:29.000Z”
}

 

LET’S START CODE RESTFUL API

  1. Endpoint
    Dalam membuat API, endpoint adalah istilah yang digunakan untuk menyebutkan URL pada API yang sedang dibangun. Misalnya kita punya URL http://belajaraplikasi.com/auth/token, kita bisa menyebutnya endpoint /auth/token. Format endpoint dapat disesuaikan dengan kebutuhan.RouteRequest
    Method
    Body RequestDescription/mahasiswaGETGet all mahasiswa data/mahasiswa/{id}GETGet a single mahasiswa data/mahasiswaPOSTid
    nim
    jk
    alamat
    jurusan
    Insert new mahasiswa record into database/mahasiswa/{id}POSTnim
    jk
    alamat
    jurusan
    Update mahasiswa record into database./mahasiswa/{id}DELETEDelete particular mahasiswa record from database
  2. Database
    Buatlah database dengan nama db_kampus, lalu eksekusi perintah sql dibawah ini untuk
    membuat table.
    USE `db_kampus`;
    
    /*Table structure for table `tbl_mahasiswa` */
    
    DROP TABLE IF EXISTS `tbl_mahasiswa`;
    
    CREATE TABLE `tbl_mahasiswa` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `nim` char(8) DEFAULT NULL,
      `nama` varchar(200) DEFAULT NULL,
      `jk` char(1) DEFAULT NULL,
      `alamat` text,
      `jurusan` varchar(200) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;
    
    /*Data for the table `tbl_mahasiswa` */
    
    insert  into `tbl_mahasiswa`(`id`,`nim`,`nama`,`jk`,`alamat`,`jurusan`) values 
    (1,'15119999','muhammad al fatih','L','Jl. P. Puger 2 No 19','Informatika'),
    (2,'16119212','Fatimah','P','Jl. Ringin Raya','Sistem Informasi');
    
  3. Koneksi
    Terlebih dahulu membuat folder untuk tempat projek dengan nama api lalu membuat file
    koneksi.php didalam folder tersebut, file koneksi.php bertujuan untuk membuat koneksi ke database. Berikut sintaksnya:
    <?php
    // Membuat variabel, ubah sesuai dengan nama host dan database pada hosting 
    $host	= "localhost";
    $user	= "root";
    $pass	= "";
    $db	= "db_kampus";
    
    //Menggunakan objek mysqli untuk membuat koneksi dan menyimpan nya dalam variabel $mysqli	
    $mysqli = new mysqli($host, $user, $pass, $db);
    
    ?>
    
  4. Mempercantik URL dengan .htaccess
    Buatlah file .htaccess dan tuliskan beberapa rule seperti di bawah:
    RewriteEngine On # Turn on the rewriting engine
    RewriteRule ^mahasiswa/?$ mahasiswa.php [NC,L]
    RewriteRule ^mahasiswa/([0-9]+)/?$ mahasiswa.php?id=$1 [NC,L]
    
  5. Method
    Selanjutnya kita akan membuat beberapa method untuk mengakses database dan membuat kembalian data dalam format JSON, Buatlah file method.php dan Berikan sintaks seperti di bawah ini:
    <?php
    require_once "koneksi.php";
    class Mahasiswa 
    {
    
    	public  function get_mhss()
    	{
    		global $mysqli;
    		$query="SELECT * FROM tbl_mahasiswa";
    		$data=array();
    		$result=$mysqli->query($query);
    		while($row=mysqli_fetch_object($result))
    		{
    			$data[]=$row;
    		}
    		$response=array(
    							'status' => 1,
    							'message' =>'Get List Mahasiswa Successfully.',
    							'data' => $data
    						);
    		header('Content-Type: application/json');
    		echo json_encode($response);
    	}
    
    	public function get_mhs($id=0)
    	{
    		global $mysqli;
    		$query="SELECT * FROM tbl_mahasiswa";
    		if($id != 0)
    		{
    			$query.=" WHERE id=".$id." LIMIT 1";
    		}
    		$data=array();
    		$result=$mysqli->query($query);
    		while($row=mysqli_fetch_object($result))
    		{
    			$data[]=$row;
    		}
    		$response=array(
    							'status' => 1,
    							'message' =>'Get Mahasiswa Successfully.',
    							'data' => $data
    						);
    		header('Content-Type: application/json');
    		echo json_encode($response);
    		 
    	}
    
    	public function insert_mhs()
    		{
    			global $mysqli;
    			$arrcheckpost = array('nim' => '', 'nama' => '', 'jk' => '', 'alamat' => '', 'jurusan'   => '');
    			$hitung = count(array_intersect_key($_POST, $arrcheckpost));
    			if($hitung == count($arrcheckpost)){
    			
    					$result = mysqli_query($mysqli, "INSERT INTO tbl_mahasiswa SET
    					nim = '$_POST[nim]',
    					nama = '$_POST[nama]',
    					jk = '$_POST[jk]',
    					alamat = '$_POST[alamat]',
    					jurusan = '$_POST[jurusan]'");
    					
    					if($result)
    					{
    						$response=array(
    							'status' => 1,
    							'message' =>'Mahasiswa Added Successfully.'
    						);
    					}
    					else
    					{
    						$response=array(
    							'status' => 0,
    							'message' =>'Mahasiswa Addition Failed.'
    						);
    					}
    			}else{
    				$response=array(
    							'status' => 0,
    							'message' =>'Parameter Do Not Match'
    						);
    			}
    			header('Content-Type: application/json');
    			echo json_encode($response);
    		}
    
    	function update_mhs($id)
    		{
    			global $mysqli;
    			$arrcheckpost = array('nim' => '', 'nama' => '', 'jk' => '', 'alamat' => '', 'jurusan'   => '');
    			$hitung = count(array_intersect_key($_POST, $arrcheckpost));
    			if($hitung == count($arrcheckpost)){
    			
    		        $result = mysqli_query($mysqli, "UPDATE tbl_mahasiswa SET
    		        nim = '$_POST[nim]',
    		        nama = '$_POST[nama]',
    		        jk = '$_POST[jk]',
    		        alamat = '$_POST[alamat]',
    		        jurusan = '$_POST[jurusan]'
    		        WHERE id='$id'");
    		   
    				if($result)
    				{
    					$response=array(
    						'status' => 1,
    						'message' =>'Mahasiswa Updated Successfully.'
    					);
    				}
    				else
    				{
    					$response=array(
    						'status' => 0,
    						'message' =>'Mahasiswa Updation Failed.'
    					);
    				}
    			}else{
    				$response=array(
    							'status' => 0,
    							'message' =>'Parameter Do Not Match'
    						);
    			}
    			header('Content-Type: application/json');
    			echo json_encode($response);
    		}
    
    	function delete_mhs($id)
    	{
    		global $mysqli;
    		$query="DELETE FROM tbl_mahasiswa WHERE id=".$id;
    		if(mysqli_query($mysqli, $query))
    		{
    			$response=array(
    				'status' => 1,
    				'message' =>'Mahasiswa Deleted Successfully.'
    			);
    		}
    		else
    		{
    			$response=array(
    				'status' => 0,
    				'message' =>'Mahasiswa Deletion Failed.'
    			);
    		}
    		header('Content-Type: application/json');
    		echo json_encode($response);
    	}
    }
    
     ?>
    
  6. Request Method
    Selanjutnya kita akan membuat file mahasiswa.php yang akan diakses oleh endpoint, isi dari file adalah untuk pengecekan request method yang dilakukan dan menjalankan fungsi pada method.php sesuai dengan request methodnya. Berikut sintaks nya:
    <?php
    require_once "method.php";
    $mhs = new Mahasiswa();
    $request_method=$_SERVER["REQUEST_METHOD"];
    switch ($request_method) {
    	case 'GET':
    			if(!empty($_GET["id"]))
    			{
    				$id=intval($_GET["id"]);
    				$mhs->get_mhs($id);
    			}
    			else
    			{
    				$mhs->get_mhss();
    			}
    			break;
    	case 'POST':
    			if(!empty($_GET["id"]))
    			{
    				$id=intval($_GET["id"]);
    				$mhs->update_mhs($id);
    			}
    			else
    			{
    				$mhs->insert_mhs();
    			}		
    			break; 
    	case 'DELETE':
    		    $id=intval($_GET["id"]);
                $mhs->delete_mhs($id);
                break;
    	default:
    		// Invalid Request Method
    			header("HTTP/1.0 405 Method Not Allowed");
    			break;
    		break;
    }
    
    
    
    
    ?>
    

     

Selanjutnya kita testing API menggunakan POSTMAN seperti berikut:

Menampilkan data api dengan php
Menampilkan data api dengan php
Get All Mahasiswa
Menampilkan data api dengan php
Menampilkan data api dengan php
Get Mahasiswa
Menampilkan data api dengan php
Menampilkan data api dengan php
Insert Mahasiswa
Menampilkan data api dengan php
Menampilkan data api dengan php
Update Mahasiswa
Menampilkan data api dengan php
Menampilkan data api dengan php
Delete Mahasiswa

Full Source Code : https://github.com/rizalrizal/SimpleApiPHP

Happy Coding 🙂

Asvarizal Filcha

Seorang pemuda muslim kelahiran bandung namun keturunan minang, bekerja sebagai kuli IT di PT. Durio Indigo dan pernah mencicipi pendidikan tinggi S1 Informatika Universitas Amikom Yogyakarta.