我正在使用Laravel 5.2来创建REST API,并且我正在尝试遵循此处记录的API设计的最佳实践。其中一点提到了最小化路径嵌套,如下所示:
在具有嵌套父/子资源关系的数据模型中,路径 可能变得深度嵌套,例如:
/orgs/{org_id}/apps/{app_id}/dynos/{dyno_id}
通过优先将资源定位在根目录来限制嵌套深度 路径。使用嵌套来指示作用域集合。例如,对于 上述情况,其中测功机属于应用程序属于组织:
/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');