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 的更好方法