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 1Kita 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