【发布时间】:2017-03-01 13:23:29
【问题描述】:
我们有一个 Laravel 后端和 Angular2 作为前端。
哪种 URL 结构更好:
what/:id/action
示例:course/2/edit
(我在大多数博客中都看到过这个版本,它是Laravel's default convention)
或
what/action/:id
示例:course/edit/2
这个版本似乎对“重叠”有更好的保护
what/:id/action如果我有
课程/类别 会遇到问题,因为 类别 将落入 :id 槽。
所有这些 URL 共享相同的方法 (GET),因此结构本身需要足够好。
重叠问题可以通过按正确顺序排列路线或使用 pathMatch: 'full' 来解决,但这意味着模式本身还不够好。
抱歉,有点主观的问题,并提前感谢您的时间。
【问题讨论】:
-
course/2/edit 将是最好的 url 结构。
-
@Muthu17,是的,目前看来是这样。但我很困惑为什么 Laravel 有另一种结构,因为它是惯例......
-
默认约定是关于此问题的最佳约定。这很简单,而且很重要。没有任何形式的“真实”重叠。坚持下去。
-
我更喜欢默认约定(我过去曾使用过它)。但是如果我不管理 URL 的顺序,"categories" 是否会被视为默认模式中的 :id 参数?
-
我并没有在 url 中看到“action”,主要是资源(即名词)。现在你可能有 what/:id/editor 来访问“编辑器”,但动词是由 HTTP 请求决定的,而不是 url。
标签: laravel api angular restful-url