RESTful 应用程序的更好的 url 结构是啥?

Posted

技术标签:

【中文标题】RESTful 应用程序的更好的 url 结构是啥?【英文标题】:What is the better url structure for RESTful application?RESTful 应用程序的更好的 url 结构是什么? 【发布时间】: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。 【参考方案1】:

最好的方法是使用标准的RESTful controllers and routes:

GET         /photos
GET         /photos/create
POST        /photos
GET         /photos/photo
GET         /photos/photo/edit
PUT/PATCH   /photos/photo
DELETE      /photos/photo

【讨论】:

是的,我知道这一点,但我提到的问题呢?另一种方法似乎可以更好地处理重叠,不是吗? @Mihailo 只需使用正确的路线顺序,您将永远不会遇到这个问题。 @Mihailo 谢谢,我已经解决了这个问题。 store 必须被删除。 )

以上是关于RESTful 应用程序的更好的 url 结构是啥?的主要内容,如果未能解决你的问题,请参考以下文章

Java - 解析 RESTful 资源 URL 的更好方法

Restful Api 路径定义规则

URL、正文或标头中的 RESTful API 子类型?

REST&RESTFUL?

通过 Laravel 构建 RESTful 应用程序的传统方式是啥?

授权和构建 RESTful 后端的正确方法是啥