Zend Framework: Реализация REST API

Реализация REST API
Небольшой HowTo о том, как реализовать REST API с использованием Zend Framework 1.

Создадим новый модуль api (предполагается, что Ваш проект имеет модульную структуру).

Создадим контроллер User и унаследуем его от Zend_Rest_Controller.
[php] class Api_UserController extends Zend_Rest_Controller
{

public function init()
{
$this->getHelper(‘layout’)->disableLayout();
$this->getHelper(‘viewRenderer’)->setNoRender();
}

public function indexAction() {}

public function headAction() {}

public function getAction() {}

public function putAction() {}

public function postAction() {}

public function deleteAction() {}

}
[/php]

Для инициализации REST роутов воспользуемся классом [php]Zend_Rest_Route[/php]. Для этого в Bootstrap.php добавим следующий метод:

[php] protected function _initRoutes()
{
$front = Zend_Controller_Front::getInstance();
$restRoute = new Zend_Rest_Route($front, array(), array(‘api’));
$front->getRouter()->addRoute(‘rest’, $restRoute);
}
[/php]

Можно инициализировать REST роут только для User контроллера:

[php] $restRoute = new Zend_Rest_Route($front, array(), array(‘api’ => ‘user’));
[/php]

Есть еще одна проблема — это возможность вытянуть параметры из PUT запроса следующим образом:

[php] $userId = $request->getParam(‘id’);
[/php]

Для PUT запроса этот метод вернет [php]null[/php].

Исправить это можно при помощи плагина [php]Zend_Controller_Plugin_PutHandler[/php]. Просто добавьте следующий метод в Bootstrap.php:
[php] protected function _initPlugins()
{
$front = Zend_Controller_Front::getInstance();
$front->registerPlugin(new Zend_Controller_Plugin_PutHandler());
}
[/php]

Enjoy! 🙂

Stas Kuryan

Web developer. Перфекционист в написании кода.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *