如何使用自定义和可选操作在ZF1应用程序中配置Rest API的路由?

时间:2016-06-09 09:49:32

标签: php rest zend-framework zend-rest zend-rest-route

我们在ZF1网络应用中设置了Rest API,但我们在配置路由方面遇到了问题。

我们的想法是在application.ini中进行全局配置,其中包括“经典”Rest路由和可选操作。

这意味着我们希望拥有这样的基本CRUD操作:

GET    /user/1
POST   /user
PUT    /user/1
DELETE /user/1

但也有自定义操作:

GET    /user/findBySomething

现在,app的路由在application.ini中定义如下:

resources.router.routes.app.type = "Zend_Controller_Router_Route_Hostname"
resources.router.routes.app.route = ":module.myApp.com"
resources.router.routes.app.defaults.module = "app"
resources.router.routes.app.chains.default.type = "Zend_Controller_Router_Route"
resources.router.routes.app.chains.default.route = ":lang/:@controller/:@action/*"
resources.router.routes.app.chains.default.defaults.lang = "fr"
resources.router.routes.app.chains.default.defaults.controller = "index"
resources.router.routes.app.chains.default.defaults.action = "index"

我们需要为api配置不同的配置,到目前为止我们有这个:

resources.router.routes.api.type = "Zend_Controller_Router_Route_Hostname"
resources.router.routes.api.route = ":module.myApp.com"
resources.router.routes.api.defaults.module = "api"
resources.router.routes.api.chains.default.type = "Zend_Controller_Router_Route"
resources.router.routes.api.chains.default.route = ":lang/:@controller/*"
resources.router.routes.api.chains.default.defaults.lang = "fr"
resources.router.routes.api.chains.default.defaults.controller = "index"
resources.router.routes.api.chains.default.defaults.action = "index"

我们在抽象API控制器中捕获请求,并根据请求的HTTP方法定义要调用的方法。

这适用于基本的CRUD操作,但如果我们想要访问自定义操作,逻辑上将无法正常工作,我们无法找到实现此目的的方法。

我们尝试了几个选项,例如使用Zend_Controller_Router_Route_Regex来定义路线,但未成功。或者在Bootstrap中手动添加addRoute()的自定义路由。

有没有人有想法?在我们花在研究上的时间之后,到目前为止,看起来ZF1不能让我们设置一个合适的Rest API ......

0 个答案:

没有答案