簡體   English   中英

Laravel:與控制器一起使用最少的嵌套路由

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM