Anda di halaman 1dari 17

[ MODUL 14 ]

MEBUAT RESTful API DENGAN


PHP & MYSQL
1. Pendahuluan

REST, singkatan bahasa Inggris dari representational state transfer atau transfer
keadaan representasi, adalah suatu gaya arsitektur perangkat lunak untuk untuk
pendistibusian sistem hipermedia seperti WWW. Istilah ini diperkenalkan pertama kali
pada tahun 2000 pada disertasi doktoral Roy Fielding, salah seorang penulis utama
spesifikasi HTTP. Istilah ini selanjutnya dipergunakan secara luas pada komunitas jaringan.
REST secara spesifik merujuk pada suatu koleksi prinsip-prinsip arsitektur jaringan yang
menggariskan pendefinisian dan pengalamatan sumber daya. Istilah ini sering digunakan
dengan longgar untuk mendeskripsikan semua antarmuka sederhana yang menyampaikan
data dalam domain spesifik melalui HTTP tanpa tambahan lapisan pesan seperti SOAP atau
pelacakan sesi menggunakan cookie HTTP. Dua pengertian ini dapat menimbulkan konflik
dan juga tumpang tindih. Dimungkinkan untuk merancang suatu sistem perangkat lunak
besar sesuai dengan gaya arsitektur REST Fielding tanpa menggunakan HTTP dan tanpa
berinteraksi dengan WWW. Juga dimungkinkan untuk merancang antarmuka XML+HTTP
sederhana yang tidak mengikuti prinsip-prinsip REST, tapi sebaliknya mengikuti model dari
RPC (remote procedure call). Perbedaan penggunaan istilah REST ini cukup menyebabkan
permasalahan dalam diskusi-diskusi teknis. Sistem yang mengikuti prinsip REST Fielding
sering disebut sebagai "RESTful".

REST menekankan beberapa constraints yang dapat digunakan untuk membuat Web Services.
Web services sendiri dapat dikatakan adalah salah satu jenis dari implementasi API dari untuk
menghubungkan beberapa sistem yang terpisah oleh suatu jaringan.

REST ini memiliki standarisasi dalam pemakaian yaitu mengenai URL dan HTTP verbs.
Dengan menggunakan URL yang sama kita dapat melakukan 5 operasional berdasarkan
HTTP verbs. Secara teknis HTTP verbs ini adalah $_SERVER[‘REQUEST_METHOD’].

Standarisasi HTTP verbs atau $_SERVER[‘REQUEST_METHOD’] ada 5 yaitu

 GET: untuk membaca sebuah record atau daftar record


 POST: untuk menambah sebuah record
 PUT: untuk mengupdate semua field dalam sebuah record
 PATCH: untuk mengupdate beberapa field dalam sebuah record
 DELETE: untuk menghapus sebuah record

RESTful API adalah API yang dibangun dengan mengacu pada konsep dan constraints dari
REST. Prinsip kerja dari RESTful API ini adalah client akan menganggap server sebagai
object yang dapat dibuat, diupdate, dihapus dan juga dibaca. Jadi pada pelaksanaannya
akan ada create dengan request POST, update dengan request PUT atau PATCH, hapus
dengan request DELETE, dan baca dengan request GET.
2. PRAKTIKUM MEMBUAT RESTFUL API MAHASISWA
a. Pemetaan REST API
Route Metode Jenis Deskripsi
api/mahasiswa/ GET JSON Meminta semua data mahasiswa
api/mahasiswa/{npm} GET JSON Meminta data satu mahasiswa
api/mahasiswa/ POST JSON Menambah record data mahasiswa
baru ke database
api/mahasiswa/ PUT JSON Mengupdate recode data mahasiswa
api/mahasiswa/ DELETE JSON Menghapus data mahasiswa tertentu

b. Membuat Database & Tabel


Buat database : dbakademik
Buat tabel : t_mahasiswa
Struktur Tabel :

No Nama Field Tipe Keterangan


1 npm VARCHAR(16) Primary
2 nama_mahasiswa VARCHAR(45)
3 tempat_lahir VARCHAR(35)
4 tanggal_lahir DATE
5 jurusan VARCHAR(30)

SQL :

CREATE TABLE `t_mahasiswa` (


`npm` varchar(16) NOT NULL,
`nama_mahasiswa` varchar(45) NOT NULL,
`tempat_lahir` varchar(35) NOT NULL,
`tanggal_lahir` date NOT NULL,
`jurusan` varchar(30) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

INSERT INTO `t_mahasiswa` (`npm`, `nama_mahasiswa`, `tempat_lahir`,


`tanggal_lahir`, `jurusan`) VALUES
('43200020210001', 'Abdul Munif Komarullah', 'Ciamis', '1997-01-05',
'Komputerisasi Akuntansi'),
('43200020210002', 'Badru Hidayat', 'Tasikmalaya', '1997-02-28',
'Komputerisasi Akuntansi'),
('43200020210003', 'Cahya Utari Ningsih', 'Ciamis', '1997-11-01',
'Komputerisasi Akuntansi'),
('43200020210004', 'Devi Kasturi Amalia', 'Bandung', '1997-03-06',
'Komputerisasi Akuntansi'),
('43200020210005', 'Evi Tamala Susanti', 'Ciamis', '1997-05-05',
'Komputerisasi Akuntansi'),
('43200020210006', 'Fina Lestari ', 'Jakarta', '1997-10-06',
'Komputerisasi Akuntansi'),
('43200020210007', 'Gagan Gahana Januar', 'Ciamis', '1997-01-22',
'Komputerisasi Akuntansi'),
('43200020210008', 'Hani Nirmala Putri ', 'Yogyakarta', '1997-10-
06', 'Komputerisasi Akuntansi'),
('43200020210009', 'Ika Kartika Putri', 'Ciamis', '1997-12-22',
'Komputerisasi Akuntansi'),
('43200020210010', 'Jajang Nurjaman ', 'Ciamis', '1997-10-12',
'Komputerisasi Akuntansi'),
('43200020210011', 'Kamelia Putri Anggraeni', 'Ciamis', '1997-07-
08', 'Teknik Informatika'),
('43200020210012', 'Lulu Amalia ', 'Tasikmalaya', '1997-10-12',
'Teknik Informatika'),
('43200020210013', 'Maman Sudarmani', 'Cilacap', '1997-09-08',
'Teknik Informatika'),
('43200020210014', 'Ningsih Setiadi ', 'Tasikmalaya', '1997-01-05',
'Teknik Informatika'),
('43200020210015', 'Oskar Delpiero Datista', 'Genova', '1997-09-08',
'Teknik Informatika'),
('43200020210016', 'Pipin Yusani Mahendra', 'Tasikmalaya', '1997-01-
05', 'Teknik Informatika'),
('43200020210017', 'Qisti Qurota Ayuni', 'Ciamis', '1997-09-01',
'Teknik Informatika'),
('43200020210018', 'Ririn Maharani', 'Tasikmalaya', '1997-01-05',
'Teknik Informatika'),
('43200020210019', 'Sri Putri Lestari', 'Ciamis', '1997-02-01',
'Teknik Informatika'),
('43200020210020', 'Tanti Hidayati', 'Tasikmalaya', '1997-05-05',
'Teknik Informatika'),
('43200020210021', 'Uci Sulastri', 'Ciamis', '1997-02-01', 'Teknik
Informatika'),
('43200020210022', 'Vina Rosalinda', 'Tasikmalaya', '1997-07-12',
'Teknik Informatika'),
('43200020210023', 'Xien Zhang Chung', 'Wuhan', '1997-02-01',
'Teknik Informatika'),
('43200020210024', 'Yeyen Yuanari', 'Tasikmalaya', '1997-07-12',
'Teknik Informatika'),
('43200020210025', 'Zafir Khan', 'Mumbai', '1997-10-10', 'Teknik
Informatika');

ALTER TABLE `t_mahasiswa`


ADD PRIMARY KEY (`npm`);
COMMIT;

c. Membuat Halaman PHP


Untuk membuat RESTFUL API ini silahkan buat folder dengan nama “api” pada
direstory root webserver (c:\xampp\htdocs\.)
Halaman dan file yang akan dipersiapkan meliputi :
 koneksi.php : Halaman untuk konfigurasi koneksi ke database, untuk
halaman koneksi.php anda bisa menggunakan dari project sebelumnya.
 .htaccess : File ini digunakan untuk mengatur redirect dan routing
 index.php: Ini adalah file entri, sekaligus mencegah navigasi terhadap file-file
 mahasiswa.php : folder File ini mengandung semua titik ujung (end point)
dari REST API dan metode mewakili aksi yang diperlukan.

Membuat Halaman “koneksi.php”

<?php
$host="localhost";
$user="root";
$pass="";
$database="dbakademik";
$koneksi= new mysqli($host,$user,$pass,$database);
if(mysqli_connect_errno()){
trigger_error("Koneksi ke database gagal : ".
mysqli_connect_error(), E_USER_ERROR);
}

?>

Membuat Halaman “htaccess.php”


Kita akan membuat file .htaccess di dalam folder dan memasukkan beberapa baris
aturan untuk mengatur akses ke REST API dengan URL yang lebih singkat, bagus dan
aman. Inilah baris-baris yang harus dimasukkan dalam file .htaccess tersebut:

RewriteEngine On # Turn on the rewriting engine


RewriteRule ^mahasiswa/?$ mahasiswa.php [NC,L]
RewriteRule ^mahasiswa/([0-9]+)/?$ mahasiswa.php?npm=$1 [NC,L]
Membuat Halaman “index.php”
Tampilan :
Kode Lengkap :

<html>
<head>
<title>MEMBUAT RESTFUL API DENGA PHP & MYSQL</title>
<body>
<h2 align="center">MEMBUAT RESTFUL API DENGA PHP & MYSQL</h2>

</body>
</html>

Membuat Halaman “mahasiswa.php”


Kode Lengkap :
<?php
include"koneksi.php";

//REST API untuk menampilkan data mahasiswa baik secara keseluruhan


baik berdasarkan NPM tertentu dan mengirimkan output berupa array
data JSON ke client
function get_mahasiswa($npm=0) {
global $koneksi;
$query="SELECT * FROM t_mahasiswa";
if($npm != 0) {
$query.=" WHERE npm=".$npm." LIMIT 1";
}

$response=array();
$result=mysqli_query($koneksi, $query);
while($row=mysqli_fetch_assoc($result)) {
$response[]=$row;
}
header('Content-Type: application/json');
echo json_encode($response);
}

//REST API unutukk menyimpan data mahasiswa kemudian mengirimkan


mengirimkan status berupa array data JSON ke client

function insert_mahasiswa(){
global $koneksi;
parse_str(file_get_contents("php://input"),$data);
$npm=mysqli_real_escape_string($koneksi,$data["npm"]);

$nama_mahasiswa=mysqli_real_escape_string($koneksi,$data["nama_mahas
iswa"]);

$tempat_lahir=mysqli_real_escape_string($koneksi,$data["tempat_lahir
"]);
$tanggal_lahir=mysqli_real_escape_string($koneksi,$data["tanggal_lah
ir"]);
$jurusan=mysqli_real_escape_string($koneksi,$data["jurusan"]);

$insert=mysqli_query($koneksi,"INSERT INTO t_mahasiswa


(npm,nama_mahasiswa,tempat_lahir,tanggal_lahir,jurusan)
VALUES
('$npm','$nama_mahasiswa','$tempat_lahir','$tanggal_lahir','$jurusan
')");

if($insert){
$response=array(
'status' => 1,
'status_message' =>'Mahasiswa berhasil ditambah.');

}else{
$response=array(
'status' => 0,
'status_message' =>'Mahasiswa gagal ditambah.');

header('Content-Type: application/json');
echo json_encode($response);

//Fungsi untuk memperbaharui data mahasiswa kemudian mengirimkan


mengirimkan status berupa array data JSON ke client
function update_mahasiswa(){
global $koneksi;
parse_str(file_get_contents("php://input"),$data);
$npm=mysqli_real_escape_string($koneksi,$data["npm"]);

$nama_mahasiswa=mysqli_real_escape_string($koneksi,$data["nama_mahas
iswa"]);

$tempat_lahir=mysqli_real_escape_string($koneksi,$data["tempat_lahir
"]);

$tanggal_lahir=mysqli_real_escape_string($koneksi,$data["tanggal_lah
ir"]);
$jurusan=mysqli_real_escape_string($koneksi,$data["jurusan"]);

$update=mysqli_query($koneksi,"UPDATE t_mahasiswa SET


nama_mahasiswa='$nama_mahasiswa',
tempat_lahir='$tempat_lahir',
tanggal_lahir='$tanggal_lahir',
jurusan='$jurusan' WHERE npm='$npm'");

if($update){
$response=array(
'status' => 1,
'status_message' =>'Mahasiswa berhasil diupdate.');

}else{
$response=array(
'status' => 0,
'status_message' =>'Mahasiswa gagal diupdate.');
}

header('Content-Type: application/json');
echo json_encode($response);

//Fungsi untuk menghapus data mahasiswa kemudian mengirimkan


mengirimkan status berupa array data JSON ke client
function delete_mahasiswa(){
global $koneksi;
parse_str(file_get_contents("php://input"),$data);
$npm=mysqli_real_escape_string($koneksi,$data["npm"]);

$delete=mysqli_query($koneksi,"DELETE FROM t_mahasiswa WHERE


npm='$npm'");

if($delete){
$response=array(
'status' => 1,
'status_message' =>'Mahasiswa berhasil dihapus.');

}else{
$response=array(
'status' => 0,
'status_message' =>'Mahasiswa gagal dihapus.');

header('Content-Type: application/json');
echo json_encode($response);

//Seleksi jenis method yang dipilih


$request_method=$_SERVER["REQUEST_METHOD"];
switch($request_method) {
case 'GET':
if(!empty($_GET['npm'])) {

get_mahasiswa(mysqli_real_escape_string($koneksi,$_GET['npm']));
}
else {

get_mahasiswa();
}
break;

case 'POST':
insert_mahasiswa();
break;

case 'PUT':
update_mahasiswa();
break;

case 'DELETE':
delete_mahasiswa();
break;

default:
// jika request yang diminta tidak terdaftar
header("HTTP/1.0 405 Method Not Allowed");
break;

?>

3. PRAKTIKUM MENGGUNAKAN RESTFUL API DENGAN POSTMAN


Route Metode Jenis Deskripsi
api/mahasiswa/ GET JSON Meminta semua data mahasiswa
api/mahasiswa/{npm} GET JSON Meminta data satu mahasiswa
api/mahasiswa/ POST JSON Menambah record data mahasiswa
baru ke database
api/mahasiswa/ PUT JSON Mengupdate recode data mahasiswa
api/mahasiswa/ DELETE JSON Menghapus data mahasiswa tertentu

a. MENGINSTAL EXTENTTION TABBED POSTMAN


Install extension POSTMAN pada browser google chrome
- Masuk ke Google Chrome lalu klik menu di pojok kanan atas > More tools >
Extentions
- Lalu masuk ke toko chrome

- Masukan keyword postman pada kolom pencarian > cari > kemudian pilih
Tabbed Postman – REST CLIENT > lalu instal/pasangkan
-
- Apabila sudah terpasang klik icon tabbed psotman pada toolbar diatas sehingga
tampilan halaman browser manjadi seperti dibawah ini

b. MEMANGGIL REST API TAMPIL SEMUAM MAHASISWA


Memanggil REST API untuk menampilkan data semua mahasiswa
api/mahasiswa/ GET JSON Meminta semua data mahasiswa

Masukan alamat REST API “ http://localhost/api/mahasiswa “ method “GET” kemudian


klik tombol “Send”
c. MEMANGGIL REST API TAMPIL MAHASISWA BERDASARKAN NPM
Memanggil REST API untuk menampilkan data sebagian mahasiswa
api/mahasiswa/{npm} GET JSON Meminta sebagian data mahasiswa

Masukan alamat REST API “ http://localhost/api/mahasiswa/43200020210024 “ method


“GET” kemudian klik tombol “Send”
d. MEMANGGIL REST API INSERT DATA MAHASISWA
Memanggil REST API untuk menginput data mahasiswa
api/mahasiswa/ POST JSON Menambah record data mahasiswa baru ke
database

Masukan alamat REST API “ http://localhost/api/mahasiswa/ “ method “POST” lalu pilih


jenis konten formulir “x-www-form-urlencoded , masukan Key dan Value sesuai dengan
inputan data yang benar dan yang terakhir klik tombol “Send”

Untuk mengecek apakah berhasil tersimpan ke database gunakan cek dengan get
mahasiswa
e. MEMANGGIL REST API UPDATE DATA MAHASISWA
Memanggil REST API untuk memperbaharui data mahasiswa
api/mahasiswa/ PUT JSON Mengupdate recod data mahasiswa

Masukan alamat REST API “ http://localhost/api/mahasiswa/ “ method “PUT” lalu pilih


jenis konten formulir “x-www-form-urlencoded “, masukan Key dan Value sesuai
dengan data yang benar dan yang terakhir klik tombol “Send”

Cek apakah benar-benar sudah diperbaharui


f. MEMANGGIL REST API UPDATE DATA MAHASISWA
Memanggil REST API untuk menghapus data mahasiswa
api/mahasiswa/ DELETE JSON Menghapus recod data mahasiswa

Masukan alamat REST API “ http://localhost/api/mahasiswa/ “ method “DELETE” lalu


pilih jenis konten formulir “x-www-form-urlencoded “, masukan Key dan Value sesuai
dengan data yang benar dan yang terakhir klik tombol “Send”

Cek apakah masih ada di database atau sudah terhapus

Anda mungkin juga menyukai