Дополнительные действия в Zend Rest Controller помимо действий по умолчанию

Я знаю, что REST API может быть реализован с помощью Zend_Rest_Controller и имеет 5 абстрактных методов indexAction, getAction, postAction,putAction,deleteAction для выполнения возврата, создания, обновления и т. Д....

Мой вопрос, могу ли я иметь больше функций API в контроллере, кроме этих функций по умолчанию для выполнения операций различного типа?.

Например:

indexAction - возвращает список доступных книг,

searchAction - возвращает список книг по критерию поиска. (Я знаю, что это может быть сделано в indexAction с некоторыми параметрами, но тогда код будет выглядеть более сложным, мне нужно избегать этого)

1 ответ

Решение

Да, вы можете создавать собственные методы действий в вашем контроллере. Хотя вы расширяете абстрактный класс Zend_Rest_Controller, пока вы определяете эти 5 абстрактных методов (те, которые вы уже упоминали), вы можете настраивать остальную часть вашего класса.

Единственный похожий метод, который вы можете посмотреть, это getAction(), Это ожидает параметр с именем ID и будет извлекать запись на основе первичного ключа.


Вам, вероятно, придется определить свою маршрутизацию в файле конфигурации:

routes.archive.route = "search/:keyword"
routes.archive.defaults.controller = books
routes.archive.defaults.action = search
routes.archive.defaults.year = "Hamlet"
routes.archive.reqs.year = "\s+"

И тогда вам нужно передать эти параметры конфигурации в ваш маршрутизатор:

$config = new Zend_Config_Ini('/path/to/config.ini', 'production');
$router = new Zend_Controller_Router_Rewrite();
$router->addConfig($config, 'routes');

Прочитайте документацию Zend для более подробного руководства.

Другие вопросы по тегам