MASIGNCLEAN101

Implementasi REST dengan PHP - GET, POST, DELETE

Sebelum Anda belajar mengikuti tutorial implementasi REST ini, ada baiknya Anda mengetahui konsep-konsep web service terlebih dahulu. Saya pernah menuliskan sedikit terminologi REST dan SOAP web service Disini.

Implementasi REST dengan PHP dalam kasus ini akan mengambil contoh sebuah sistem informasi buku yang didalamnya dapat memuat beberapa aksi, diantaranya untuk menampilkan buku-buku terdaftar, input buku terdaftar, serta menghapus buku yang terdaftar.

1. Dalam sebuah server terdapat sebuah database yang berisi tabel-tabel sebagai berikut:
Implementasi REST dengan PHP - GET, POST, DELETE
Nama tabel: book (SQL DATABASENYA)
CREATE TABLE IF NOT EXISTS `book` (
  `id` varchar(5) NOT NULL DEFAULT '',
  `author` varchar(30) DEFAULT NULL,
  `title` varchar(30) DEFAULT NULL,
  `genre` varchar(30) DEFAULT NULL,
  `price` float DEFAULT NULL,
  `publish_date` date DEFAULT NULL,
  `description` text,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
 
INSERT INTO `book` (`id`, `author`, `title`, `genre`, `price`, `publish_date`, `description`) VALUES
('1', 'Gambardella, Matthew', 'XML Developer''s Guide', 'Computer', 44.95, '2000-10-01', 'An in-depth look at creating applications\n      with XML.'),
('2', 'Ralls, Kim', 'Midnight Rain', 'Fantasy', 5.95, '2000-12-16', 'A former architect battles corporate zombies,\n      an evil sorceress, and her own childhood to become queen\n      of the world.'),
('666', 'Matthew Bellamy', 'Starlight', 'Fiction', 5, '2012-07-24', 'Book of fiction'),
('4', 'Marthen Lau', 'Mobile Web Design', 'Computer', 5.6, '2012-04-24', 'mobile web design book'),
('18', 'Jaka', 'Jaka Sembung', 'Folks', 12, '2012-04-24', 'bagus'),
('17', 'Jaka', 'Jaka Sembung', 'Folks', 12, '2012-04-24', 'bagus'),
('21', 'Ralls, Kim', 'Midnight Rain', 'Fantasy', 5.95, '2012-04-24', 'A former architect battles corporate zombies,      an evil sorceress, and her own childhood to become queen      of the world.');


2. Agar database tersebut dapat digunakan untuk aplikasi yang berbeda, maka data-data tersebut harus diubah ke dalam format data web service, dalam hal ini menggunakan format XML. Berikut script REST-PHP untuk melakukan metode-metode REST (GET, POST, dan DELETE), file ini disimpan dengan nama books.php. Setting koneksi ke database diatur di dalam script koneksi.php.
Script koneksi.php

<?php
    // Koneksi ke Database
    $link = mysql_connect('localhost', 'root', 'password') or die('Could not connect: ' . mysql_error());
    mysql_select_db('nama_database') or die('Could not select database');
?>
Script books.php

<?php
//header untuk format XML, jika dihilangkan maka akan berbentuk data String
header('Content-Type: text/xml; charset=ISO-8859-1');
include "koneksi.php";
 
// Check for the path elements
$path = $_SERVER[PATH_INFO];    
if ($path != null) {
    $path_params = spliti ("/", $path);
}
 
// METODE REQUEST untuk POST
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $input = file_get_contents("php://input");
    $xml = simplexml_load_string($input);
    foreach ($xml->book as $book) {
        $querycek = "SELECT * FROM book WHERE id ='$book->id'";
        $num_rows = mysql_num_rows($querycek);
 
        if ($num_rows == 0)
        {
            $query = "INSERT INTO book (
                id,
                author,
                title,
                genre,
                price,
                publish_date,
                description)
                VALUES (                
                '$book->id',
                '$book->author',
                '$book->title',
                '$book->genre',
                '$book->price',
                '$book->publish_date',               
                '$book->description')";
 
        }
        else if ($num_rows == 1)
        {
            $query = "UPDATE book SET
 
                author = '$book->author',
                title = '$book->title',
                genre = '$book->genre',
                price = '$book->price',
                publish_date = '$book->publish_date',
                description = '$book->description'
                WHERE id = '$book->id'";
 
        }
        $result = mysql_query($query) or die('Query failed: ' . mysql_error());
    }
 
// METODE REQUEST untuk DELETE
} else if ($_SERVER['REQUEST_METHOD'] == 'DELETE') {
    $input = file_get_contents("php://input");
    $xml = simplexml_load_string($input);
    foreach ($xml->book as $book) {
        $query = "DELETE FROM book WHERE id='$book->id'";
        $result = mysql_query($query) or die('Query failed: ' . mysql_error());
 
    }
 
// METODE REQUEST untuk GET
} else if ($_SERVER['REQUEST_METHOD'] == 'GET') {
    if ($path_params[1] != null) {
            $query = "SELECT 
                id,
                author,
                title,
                genre,
                price,
                publish_date,
                description
                FROM book WHERE id = $path_params[1]";
    } else {  
        $query = "SELECT 
                id,
                author,
                title,
                genre,
                price,
                publish_date,
                description
                FROM book ";
    }
    $result = mysql_query($query) or die('Query failed: ' . mysql_error());
 
    echo "<data>";
    while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
        echo "<book>";
        foreach ($line as $key => $col_value) {
            echo "<$key>$col_value</$key>";
        }
        echo "</book>";
    }
    echo "</data>";
 
    mysql_free_result($result);
}
 
mysql_close($link);
 
?>

Keterangan:

GET untuk mengambil data XML

POST untuk memasukkan data XML ke database (menambahkan data)

DELETE untuk menghapus node/data XML

nb: sebenarnya dalam REST dikenal juga istilah PUT, namun yang sering digunakan adalah POST. Baik PUT dan POST dapat digunakan untuk melakukan update data (edit data), namun hingga tulisan ini dibuat penulis belum tahu cara mengmplementasikan PUT/POST untuk updating data.

3. Untuk mengecek apakah script books.php sudah dapat berkomunikasi dengan database yang ada, coba panggil script books.php yang ada di server masing-masing melalui browser. Misalnya http://localhost/examples/restweb/books.php. Jika hasilnya berupa data XML seperti tampak pada gambar berikut, maka script books.php sudah berjalan dengan benar.


Sumber Lengkap : www.adityarizki.net
Share This :
Apradiz Renfaan

Penikmat Kopi dan Teh