我们在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 ......