[英]Laravel: Using minimal nested routes with controllers
我正在使用Laravel 5.2創建REST API,並且正在嘗試遵循API設計的最佳實踐,如此處所述 。 要點之一提到最小化路徑嵌套,如下所示:
在具有嵌套父/子資源關系的數據模型中,路徑可能會深度嵌套,例如:
/orgs/{org_id}/apps/{app_id}/dynos/{dyno_id}
通過優先在根路徑上定位資源來限制嵌套深度。 使用嵌套來表示作用域集合。 例如,對於上面的一個dyno屬於一個應用屬於組織的情況:
/orgs/{org_id} /orgs/{org_id}/apps /apps/{app_id} /apps/{app_id}/dynos /dynos/{dyno_id}
來自https://github.com/interagent/http-api-design/blob/master/requests/minimize-path-nesting.md
使用Laravel的控制器和路由執行此操作的最佳方法是什么? 目前,我正在使用:
Route::resource('orgs', 'OrganisationController', ['except' => ['edit', 'create']]);
Route::resource('apps', 'AppController', ['except' => ['edit', 'create']]);
目前,我認為我需要為orgs/{org_id}/apps/
添加另一條單一路由,該路由僅使用AppController@index
方法。 這些僅是示例,我有很多資源,因此對於每個代碼都必須重復上述代碼。
這是最好的做事方式,還是我不知道有沒有更干凈的選擇?
謝謝。
是的,您必須注冊每個資源。 另一種選擇是根據某些命名約定將路由自動映射到控制器,但這不是Laravel中處理路由的方式。
如果資源需要一小部分可用操作,則可以使用only
選項:
Route::resource('example', 'ExampleController', ['only' => ['index']]);
或簡單地將其注冊為獨立路由:
Route::get('example', 'ExampleController@index');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.