ZF1 Web アプリで Rest API を設定していますが、ルートの構成に問題があります。
アイデアは、「従来の」Rest ルートとオプションのアクションを含む application.ini にグローバル構成を設定することです。
これは、次のような基本的な CRUD 操作が必要であることを意味します。
GET /user/1
POST /user
PUT /user/1
DELETE /user/1
しかし、次のようなカスタム アクションも使用できます。
GET /user/findBySomething
今のところ、アプリのルートは 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
を使用してルートを定義するなど、いくつかのオプションを試しましたが失敗しました。addRoute()
または、Bootstrap でカスタム ルートを手動で追加します。
誰にもアイデアはありますか?調査に時間を費やした後、これまでのところ、ZF1 では適切な Rest API をセットアップできないようです...