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

#api #zend-framework #module #zend-framework-modules

#API #zend-framework #модуль #zend-framework-modules

Вопрос:

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

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

Продукт

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

Сущность

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

  • /клиент

  • /поставщик

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

Получить

Публикация

Поместите

Удалить

Пример:

Products/index/?id=1amp;name=test (добавлю)

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

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

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

Комментарии:

1. Без какой-либо информации о вашей начальной загрузке / маршрутизации это трудно исправить. Вам также следует взглянуть на REST-router: framework.zend.com/manual/en /…

Ответ №1:

Да, вы можете.

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

 <?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-адрес следующим образом, когда переменные являются bind ‘123’ -> $id и ‘test’ -> $name

 products/id/123/name/test
  

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