更正相关对象的 REST API URL 格式
Correct REST API URL format for related objects
我正在设计一个 REST API,其中有两个对象。
Journey
Report
对于每个 Journey
有许多 Reports
途中,每个 Report
恰好有一个关联 Journey
.
用户可能会使用 API 创建一个 Journey
,如下所示...
POST /journey/
然后检索详细信息...
GET /journey/1226/
第一个问题 是,如果用户想要 post 一个 Report
到他们的 Journey
,即 'correct' URL API 应该强加的结构?这对我来说似乎很直观...
POST /journey/1226/report/
...或者是这样...
POST /report/
...在后者中,Journey
ID 在请求正文中的某处传递?
第二个问题是,如何在 Django REST 框架等工具中实现第一个案例?
谢谢!
URL/URI结构几乎完全不相关。很高兴能够阅读它,或者轻松地更改甚至猜测它,但仅此而已。没有 "requirement" 官方或未成文的它们应该是什么样子。
但是,要点是您在响应中向您的客户提供 URI。每个 GET 都会为您提供一个表示,其中包含指向您的客户可以访问的下一个 "states" 的链接。这意味着服务器可以完全控制 URI 结构,客户端通常只需知道 "start" 或 "homepage" URI,仅此而已。
这里有一篇文章讨论了这个问题,有一些好的观点:http://www.ben-morris.com/hackable-uris-may-look-nice-but-they-dont-have-much-to-do-with-rest-and-hateoas/
通过第二个问题:)我没有使用那个特定的框架。
我正在设计一个 REST API,其中有两个对象。
Journey
Report
对于每个 Journey
有许多 Reports
途中,每个 Report
恰好有一个关联 Journey
.
用户可能会使用 API 创建一个 Journey
,如下所示...
POST /journey/
然后检索详细信息...
GET /journey/1226/
第一个问题 是,如果用户想要 post 一个 Report
到他们的 Journey
,即 'correct' URL API 应该强加的结构?这对我来说似乎很直观...
POST /journey/1226/report/
...或者是这样...
POST /report/
...在后者中,Journey
ID 在请求正文中的某处传递?
第二个问题是,如何在 Django REST 框架等工具中实现第一个案例?
谢谢!
URL/URI结构几乎完全不相关。很高兴能够阅读它,或者轻松地更改甚至猜测它,但仅此而已。没有 "requirement" 官方或未成文的它们应该是什么样子。
但是,要点是您在响应中向您的客户提供 URI。每个 GET 都会为您提供一个表示,其中包含指向您的客户可以访问的下一个 "states" 的链接。这意味着服务器可以完全控制 URI 结构,客户端通常只需知道 "start" 或 "homepage" URI,仅此而已。
这里有一篇文章讨论了这个问题,有一些好的观点:http://www.ben-morris.com/hackable-uris-may-look-nice-but-they-dont-have-much-to-do-with-rest-and-hateoas/
通过第二个问题:)我没有使用那个特定的框架。