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

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

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

Создадим контроллер User и унаследуем его от Zend_Rest_Controller.

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() {}

}

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

protected function _initRoutes()
{
    $front = Zend_Controller_Front::getInstance();
    $restRoute = new Zend_Rest_Route($front, array(), array('api'));
    $front->getRouter()->addRoute('rest', $restRoute);
}

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

$restRoute = new Zend_Rest_Route($front, array(), array('api' => 'user'));

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

$userId = $request->getParam('id');

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

Исправить это можно при помощи плагина Zend_Controller_Plugin_PutHandler. Просто добавьте следующий метод в Bootstrap.php:

protected function _initPlugins()
{
    $front = Zend_Controller_Front::getInstance();
    $front->registerPlugin(new Zend_Controller_Plugin_PutHandler());
}

Enjoy! 🙂

Stas Kuryan

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

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

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