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

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

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

Eg:

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

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


person Shaolin    schedule 27.01.2013    source источник


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

person hohner    schedule 27.01.2013
comment
Допустим, я пишу действие под названием searchAction. Как контроллер Rest идентифицирует его как метод HTTP GET? - person Shaolin; 27.01.2013