所以说我有三个型号/表:注意,发货和用户。我想要请求发货的页面,但我需要来自特定用户的相关注释(文本,图像等)的信息。
处理此问题的最佳方法是什么?
我应该创建像/api/shipment/note
这样的嵌套资源,并向其添加查询参数以指定用户ID,pagesize等吗? (嵌套资源如/api/shipment/note
有效的REST吗?我看到像/api/note/{noteid}/shipment
这样的东西是有效的但是如何组合起来获得所有的东西)
或者我应该从/api/shipment
请求所有货件(在查询参数中指定用户)并从/api/note/{noteid}
请求每个货件的备注信息?
或者我应该使用/api/user/{userid}/shipment/note
?
或者因为我很少在没有说明信息的情况下请求发货资源,我是否应该将说明信息添加到/api/shipment
端点?
答案 0 :(得分:1)
如果您的用例让您同时查询货件和纸币,则组合这些呼叫会更有效。这也假设两组数据都来自同一个数据存储。
要处理您不需要note
数据的情况,您可以引入详细级别或include
查询字符串参数来标识应包含的额外数据。< / p>
API /装运包括=音符|?FOO |杆
OR
API /装运/ {ID}?包括=注
答案 1 :(得分:1)
根据here的答案提供更多可能性。
a)使用自定义媒体类型:
margin-left
信用:https://stackoverflow.com/a/42147688/8543451
b)使用新的内容特定端点:
margin-right
信用:https://stackoverflow.com/a/42146963/8543451
c)作为合并资源
这基本上是 b )但有一个转折:
GET /api/shipments HTTP/1.1
Host: example.com
Accept: application/vnd.company.full+json
这是因为它统一了加入的概念as a noun。