Membuat RESTful API Dengan PHP Dan MySQLi
Membuat RESTful API Dengan PHP Dan MySQLi
MySQLi
Tutorial PHP kali ini mencoba untuk menjelaskan secara mudah cara membangun
suatu RESTful API yang mendukung semua operasi CRUD tanpa harus menggunakan
suatu framework REST. Adanya framework memudahkan banyak urusan tetapi kurang
baik untuk memahami cara kerja konsep dasar dari suatu sistem. Kita dapat
mendefinisikan struktur dan mengubahnya sesuai dengan keperluan, termasuk
mendefinisikan aturan bagi framework REST API dan kemudahan aksesnya. Adalah
tidak wajib untuk menggunakan framework untuk membangun REST API
menggunakan PHP. Kita dapat membuat API hanya menggunakan kode PHP inti.
Apa beda tutorial ini dengan sebelumnya yang juga membahas pembangunan RESTful
API dengan PHP? Jika sebelumnya komunikasi antara PHP dan MySQL menggunakan
PDO, maka kali ini hanya menggunakan mysqli. Perlu diingat kembali bahwa PHP
menyediakan dua cara mengakses MySQL, yaitu berorientasi obyek (PDO) dan
prosedural (mysqli). Bagaimana dengan mysql? Sudah tidak boleh digunakan!.
Ada beberapa framework REST yang bagus bagi PHP, misalnya:
• Phalcon
• Lumen
• Slim
• Laravel
• Silex
Meminta semua
/employees GET JSON –
data pegawai
Menambahkan
{"employee_name": "Adam",
record pegawai
/employees POST JSON "employee_age": "34",
"employee_salary" : "23421"} baru ke dalam
database
Menghapus data
/employees DELETE JSON {"id" : 59}
pegawai tertentu
1
Mari kita membuat contoh REST API. Kita mulai dengan membuat folder 'api/' di
dalam root diectory dari webn server, misalnya /var/www/html/ atau
c:\xampp\htdocs\. Folder ini akan menampung semua file yang diperlukan untuk
tutoria ini. Kita akan membuat REST API untuk modul pegawai yang akan menangani
request HTTP Get,Post,Put dan Delete untuk mengambil, menambahkan, mengupdate,
dan menghapus record-record dari database MySQL.
Inilah file-file yang akan digunakan selama percobaan turorial REST API ini:
1. index.php : Ini adalah file entri, sekaligus mencegah navigasi terhadap file-file
di dalam foler.
2. connection.php : File ini digunakan untuk membangun koneksi ke database
server MySQL.
3. v1/employees.php : File ini mengandung semua titik ujung (end point) dari
REST API dan metode mewakili aksi yang diperlukan.
4. v1/.htaccess : File ini digunakan untuk mengatur redirect dan routing.
2
17 printf("Connect failed: %s\n", mysqli_connect_error());
18 exit();
19 } else {
20 $this->conn = $con;
21 }
22 return $this->conn;
23 }
24 }
25 ?>
Catatan:
Anda harus mengganti nilai dari variabel string database name, db username, db
password dan hostname sesuai dengan kondisi di komputer yang anda gunakan.
3
6 get_employees($id);
7 }
8 else {
9 get_employees();
10 }
11 break;
12 default:
13 // Invalid Request Method
14 header("HTTP/1.0 405 Method Not Allowed");
15 break;
16 }
Kita memanfaatkan request GET untuk mengambil data semua pegawai dari database,
sedangkan untuk pegawai tunggal (tertentu) perlu melewatkan employee id. Kita
mendefinisikan metode get_employees() yang berisi kode seperti di bawah ini:
1 function get_employees() {
2 global $connection;
3 $query="SELECT * FROM tb_employee";
4 $response=array();
5 $result=mysqli_query($connection, $query);
6
7 while($row=mysqli_fetch_array($result)) {
8 $response[]=$row;
9 }
10
11 header('Content-Type: application/json');
12 echo json_encode($response);
13 }
4
10 $result=mysqli_query($connection, $query);
11
12 while($row=mysqli_fetch_array($result)) {
13 $response[]=$row;
14 }
15
16 header('Content-Type: application/json');
17 echo json_encode($response);
18 }
Fungsi yang akan menangani saat ada permintaan penambahan data baru adalah
metode insert_employee() di dalam file employees.php.
1 function insert_employee() {
2 global $connection;
3
4 $data = json_decode(file_get_contents('php://input'), true);
5 $employee_name=$data["employee_name"];
6 $employee_salary=$data["employee_salary"];
7 $employee_age=$data["employee_age"];
8
9 echo $query="INSERT INTO tb_employee SET
10 employee_name='".$employee_name."',
11 employee_salary='".$employee_salary."',
12 employee_age='".$employee_age."'";
13
14 if(mysqli_query($connection, $query)) {
15 $response=array(
16 'status' => 1,
17 'status_message' =>'Employee Added Successfully.'
18 );
19 }
20 else {
21 $response=array(
22 'status' => 0,
23 'status_message' =>'Employee Addition Failed.'
24 );
5
25 }
26
27 header('Content-Type: application/json');
28 echo json_encode($response);
29 }
6
REST API untuk Menghapus Pegawai Tertentu
Terakhir, kita harus membuat fungsi untuk menangani request REST API jenis
DELETE. Request ini meminta server API untuk menghapus record tertentu. Seperti
pada CREATE dan UPDATE, DELETE juga memelukan Id Pegawai sebagai
parameternya.
Sebelumnya, sekita perlu menambahkan case “DELETE” ke dalam struktur switch
…case, seperti berikut ini:
1 case 'DELETE':
2 // Delete Product
3 $id=intval($_GET["id"]);
4 delete_employee($id);
5 break;
Kesimpulan
Kita telah membuat suatu RESTful API untuk mengambil informasi semua pegawai,
mengambil satu pegawai saja, menambahkan entri pegawai baru, mengupdate data
pegawai dan menghapus data pegawai yang telah ada dari database MySQL. Contoh
yang diperlihatkan masih sederhana sekali. Kita masih dapat menambahkan keamanan
(security) seperti token dan membatasi akses REST API dari pengguna yang tidak sah.