Дополнительные действия в 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 для более подробного руководства.