Можете ли вы использовать модули при создании Restful API в Zend Framework?

Можете ли вы использовать модули при создании Restful API в Zend Framework? Если да, то можно ли объяснить, как? с примером прив. (или ссылку с подтверждающими документами)

У меня есть модули, которые называются:

Продукт

  • может иметь один контроллер

Организация

может иметь более одного контроллера, например.

  • /клиент

  • / поставщик

В каждом у меня есть контроллер индекса с методами:

Получить

Почта

Ставить

Удалить

Пример:

Товары / index /? Id = 1 & name = test (добавлю)

Однако я хочу удалить индекс слова, поэтому вместо этого он: Products /? Id = 1 & name = test (добавит)

Я могу сделать это с помощью Zend_Controller_Router_Route, но он не передает запрос, я посмотрел на getMethod, но вы не можете этого сделать на этапе начальной загрузки.

Есть ли способ использовать модульное приложение Zend Framework в качестве успокаивающего API?


person Steve Jones    schedule 02.06.2011    source источник
comment
Без какой-либо информации о вашей начальной загрузке / маршрутизации это трудно исправить. Обратите внимание и на REST-роутер: framework.zend.com/manual/en/   -  person Fge    schedule 03.06.2011


Ответы (1)


Да, ты можешь.

Вы должны использовать Zend_Rest_Route. Он направляет запрос методом к нужному действию. Есть одна ошибка, которая не позволяет настроить оставшийся маршрут в файле конфигурации, поэтому вы должны добавить маршрут в загрузчике.

<?php
protected function _initRestRoute()
{
    $front = Zend_Controller_Front::getInstance();
    $router = $front->getRouter();
    $restRoute = new Zend_Rest_Route(
        $front,
        array(),     //Defaults
        array('api') //Restful modules
    );
    $router->addRoute('rest', $restRoute);
}

По умолчанию, если вы указываете такой URL, 123 привязывается к переменной $ id.

products/123

Вы также можете указать URL-адрес, если переменные привязаны к '123' -> $ id и 'test' -> $ name

products/id/123/name/test

Контроллеры должны расширять класс Zend_Rest_Controller.

person Eino    schedule 06.06.2011