Zend Framework Dan RESTful Web Service

REST web api bukanlah mainan baru lagi saat ini. Salah satu layanan yang menggunakan RESTful Arsitektur adalah twitter. Pada Zend Framework, kita bisa
mengimplementasikan RESTful dengan mudah. Cukup dengan membuat action sesuai dengan method yang digunakan.

getAction()  => menghandle request dengan method GET
postAction() => menghandle request dengan method POST
putAction()  => menghandle request dengan method PUT
deleteAction()  => menghandle request dengan method DELETE

Untuk lebih jelasnya, perhatikan langkah - langkah berikut.

Tambahkan router Zend_Rest_Route pada Front Controller
Untuk menambahkan Zend_Rest_Route, bisa dilakukan dengan menambahkan kode berikut pada bootstrap file (application/Bootstrap.php)

<?php
protected function _initRestRoute()
{
    
$this->bootstrap('frontController');
    
$frontController Zend_Controller_Front::getInstance();
    
$restRoute = new Zend_Rest_Route($frontController);
    
$frontController->getRouter()->addRoute('default'$restRoute);
}
?>

Kode di atas akan membuat controller yang ada pada application/ bisa digunakan untuk RESTful. Untuk membuat RESTful pada modul tertentu maupun controller tertentu silahkan melihat dokumentasinya di sini.

Extends Controller dari Zend_Rest_Controller
Buat controller application/controllers/SampleController.php dengan extends dari Zend_Rest_Controller. Controller ini akan memiliki 5 controller (indexAction(), getAction(), postAction(), putAction(), deleteAction()) yang merupakan inheritance/pewarisan dari Zend_Rest_Controller.

<?php
class SampleController extends Zend_Rest_Controller
{
    public function 
init()
    {
        
/* Initialize action controller here */
    
}

    public function 
indexAction()
    {
        echo 
"Get all data"PHP_EOL;
        
$this->_helper->viewRenderer->setNoRender(true);
    }

    public function 
getAction()
    {
        echo 
"Get data with ID " $this->_request->get('id'), PHP_EOL;
        
$this->_helper->viewRenderer->setNoRender(true);
    }

    public function 
postAction()
    {
        echo 
"Add new data "PHP_EOL;
        
print_r($_POST);
        
$this->_helper->viewRenderer->setNoRender(true);
    }

    public function 
putAction()
    {
        echo 
"Update data with ID " $this->_request->get('id'), PHP_EOL;
        
$this->_helper->viewRenderer->setNoRender(true);
    }

    public function 
deleteAction()
    {
        echo 
"Delete data with ID " $this->_request->get('id'), PHP_EOL;
        
$this->_helper->viewRenderer->setNoRender(true);
    }
}
?>

Mari kita test aplikasi RESTful yang sudah kita buat dengan curl atau
bagi yang ingin pake aplikasi dengan GUI bisa menggunakan rest-client

$ curl -X GET http://localhost/rest/sample/
Get all data
 
$ curl -X GET http://localhost/rest/sample/id/1
Get data with ID 1
 
$ curl -X DELETE http://localhost/rest/sample/id/1
Delete data with ID 1
 
$ curl -X POST -d "var=value" POST http://localhost/rest/sample
Add new data
Array
(
     [var] => value
)
 
$ curl -X PUT -d "var=value" UPDATE http://localhost/rest/sample/id/1
Update data with ID 1

Kita sudah melihat penggunaan RESTful pada Zend Framework. Pada dasarnya, untuk menerima data yang dikirim menggunakan method PUT sedikit ribet. Agar data yang dikirim bisa diterima dengan mudah maka tambahkan kode berikut pada method_initRestRoute() di application/Bootsrap.php

<?php
  $frontController
->registerPlugin(new Zend_Controller_Plugin_PutHandler());
?>

Dengan menambahkan kode di atas, maka data yang dikirim pada method PUT bisa diakses sebagai parameter pada controller dengan menggunakan method getParam(). Tambahkan kode berikut pada method putAction() application/controllers/SampleController.php

<?php
  
echo $this->_request->getParam('var'), PHP_EOL;
?>

Mari kita test kembali dengan menggunakan method PUT

$ curl -X PUT -d "var=value" UPDATE http://localhost/rest/sample/id/1
Update data with ID 1
value

Dari hasil test di atas, terlihat bahwa putAction() menampilkan nilai dari
variable var yang kita kirim. Sekian dulu cerita REST dengan Zend Framework kali ini.

Wassalam.

Comments

wah, jadi zend ini mendukung

wah, jadi zend ini mendukung web service yah... REST itu termasuk web service toh?? saya ini pemula, mau buat web pake web service, bagusnya pake zend ini ato CodeIgniter yah?? coz katanya CodeIgniter itu bagus untuk pemula..

@hikarianna Ya, Zend

@hikarianna

Ya, Zend mendukung web service. REST itu termasuk web service, yang biasa disebut RESTful Web API.
Wah kurang tahu juga lebih bagus yang mana, saya blum pernah pake CodeIgniter.

setauku di codeigniter harus

setauku di codeigniter harus download library dulu
untuk rest controller ini

saya jadi pigin belajar ini

saya jadi pigin belajar ini

Kirim Komentar

Tidak akan dipublikasikan
  • Alamat web dan email dirubah menjadi hyperlink secara otomatis
  • Tag HTML yang diizinkan: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Baris baru maupun paragraph dipisahkan secara otomatis

Informasi lebih lanjut tentang format pesan