我使用Laravel 5.2创建REST API,并且我尝试遵循API设计的最佳做法documented here。其中一点提到最小化路径嵌套,如下所示:
在具有嵌套父/子资源关系的路径中的数据模型中 可能会变得非常嵌套,例如:
/orgs/{org_id}/apps/{app_id}/dynos/{dyno_id}
通过优先在根位置查找资源来限制嵌套深度 路径。使用嵌套来指示范围集合。例如,对于 dyno属于app的上述情况属于org:
/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
方法。这些仅是示例,我有很多资源,因此必须为每个代码重复上述代码。
这是最好的做事方式,还是有一种我不知道的更清洁的选择?
感谢。
答案 0 :(得分:0)
是的,您必须注册所有资源。另一种选择是基于某些命名约定自动映射到控制器的路由,但这不是Laravel中路由的处理方式。
如果资源需要一小部分可用操作,您可以使用only
选项:
Route::resource('example', 'ExampleController', ['only' => ['index']]);
或者只是将其注册为独立路线:
Route::get('example', 'ExampleController@index');