Codefuck

Membuat REST API Sederhana Dengan PHP

2019-07-10

Rest (Representational State Transfer) adalah salah satu cara mengakses layanan web. REST API digunakan dengan membuat permintaan HTTP GET atau POST atau PUT atau DELETE dari sisi klien ke server untuk mendapatkan atau untuk menaruh beberapa informasi ke server.

Layanan web berbasis REST dapat memberikan output dalam format apa pun seperti CSV, JSON, RSS, dll. Jadi itu tergantung pada persyaratan format mana yang kalian ingin parsing dengan mudah dengan bahasa kalian.

Dalam tutorial ini kalian akan belajar cara membuat REST API sederhana menggunakan PHP, tutorial dijelaskan dalam langkah-langkah yang sangat mudah.

Jadi mari kita mulai pengkodeannya, disini saya memiliki struktur file berikut untuk contoh REST API.

  • index.php
  • read.php
  • db_connect.php

Langkah 1

Dalam contoh REST API ini, kita akan membaca data dari database MySQL. Dengan menggunakan tabel di bawah ini untuk penyimpanan data.

- item.sql
1
2
3
4
5
6
7
8
9
CREATE TABLE `items` (
`id` int(11) NOT NULL,
`name` varchar(256) NOT NULL,
`description` text NOT NULL,
`price` int(255) NOT NULL,
`category_id` int(11) NOT NULL,
`created` datetime NOT NULL,
`modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

Langkah 2

Setelah membuat tabel database MySQL, kita akan membuat file db_connect.php untuk membuat koneksi dengan database MySQL.

- db_connect.php
1
2
3
4
5
6
7
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "codescript";
$conn = mysqli_connect($servername, $username, $password, $dbname);
?>

Langkah 3

Contoh REST API ini akan mencari produk dengan membuat permintaan URL. Jadi di dalam index.php, akan membuat FORMULIR dengan tombol input dan pencarian.

- index.php
1
2
3
4
5
6
7
8
9
10
<div class="container">
<h2>How To Create Simple REST API in PHP</h2>
<form class="form-inline" action="" method="POST">
<div class="form-group">
<label for="name">Search Item(Samsung, Sony, LG etc):</label>
<input type="text" name="name" class="form-control" placeholder="Enter Product Name" required/>
</div>
<button type="submit" name="submit" class="btn btn-default">Find</button>
</form>
</div>

Langkah 4

Pada Formulir Pencarian akan membuat permintaan REST API HTTP GET melalui CURL untuk mendapatkan detail produk.

1
2
3
4
5
6
7
8
9
10
11
<?php
if(isset($_POST['submit'])) {
$name = $_POST['name'];
$url = "http://phpzag.com/demo/how-to-create-simple-rest-api-in-php/items/read/".$name;
$client = curl_init($url);
curl_setopt($client,CURLOPT_RETURNTRANSFER,true);
$response = curl_exec($client);
$result = json_decode($response);
print_r($result);
}
?>

Langkah 5

Sekarang didalam skrip REST API read.php, akan melakulan permintaan HTTP GET dan mengembalikan output JSON.

- data.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php
header("Content-Type:application/json");
include_once("../db_connect.php");
if(!empty($_GET['name'])) {
$name=$_GET['name'];
$items = getItems($name, $conn);
if(empty($items)) {
jsonResponse(200,"Items Not Found",NULL);
} else {
jsonResponse(200,"Item Found",$items);
}
} else {
jsonResponse(400,"Invalid Request",NULL);
}

function jsonResponse($status,$status_message,$data) {
header("HTTP/1.1 ".$status_message);
$response['status']=$status;
$response['status_message']=$status_message;
$response['data']=$data;
$json_response = json_encode($response);
echo $json_response;
}

function getItems($name, $conn) {
$sql = "SELECT id, p.name, p.description, p.price, p.created FROM items p WHERE p.name LIKE '%".$name."%' ORDER BY p.created DESC";
$resultset = mysqli_query($conn, $sql) or die("database error:". mysqli_error($conn));
$data = array();
while( $rows = mysqli_fetch_assoc($resultset) ) {
$data[] = $rows;
}
return $data;
}
?>

Permintaan HTTP GET dapat dilakukan melalui URL seperti di bawah ini.

Ketika HTTP GET permintaan dibuat menggunakan URL di atas, detail produk didapatkan dari tabel database menggunakan fungsi getItems() dan kembali sebagai JSON Encrypt. Jika pencarian tidak ditemukan dalam database maka itu mengembalikan pesan status sebagai “Item Tidak Ditemukan”.