什么是正确的" RESTful"将子记录添加到父记录的操作的URL?
例如,如果我想提供一个用于添加"评论"记录到"命令"记录,我该如何格式化?
我的第一个想法是:
PUT http://example.com/order/12345/comment/add
我在Django工作,它使用类似的模式,所以这看起来最直观。但是,阅读一些RESTful设计指南like this one表明这可能是不好的做法,因为他们认为" PUT"和"添加"是多余的,因此可能会产生混淆。
答案 0 :(得分:3)
我会做以下事情:
POST http://example.com/order/12345/comment
答案 1 :(得分:2)
put动作和url的add部分是多余的。但任何这方面都没有严格的规定。我看到apis有这种形式,即使是来自主要供应商,有时只是简单地说“放置动作和uri段是多余的”有时我什么都不说,只是调用端点。如果我正在写一个api,我可能会放弃添加部分。
答案 2 :(得分:1)
有几点可以让您的请求RESTful:
1)使用URL中的资源名称复数而不是单数形式(订单而不是订单)
2)永远不要在URL中使用ACTION名称,例如“comment / add”
中的(ADD)3)因为你在不知道任何手牌ID的情况下添加“新”评论,所以你应该使用POST请求。
最后,我建议的网址是:
HttpVerbs = POST http://api.example.com/orders/12345/comments
这应该为您的订单添加新评论#12345
答案 3 :(得分:0)
对于您的问题,没有一个通用的答案。其余的URL可以是您想要的任何内容。在一天结束时,它们是映射到方法的路由。我不会太担心“最佳”网址。我更愿意找到适合我的标准,然后转向更大,更重要的事情。只要客户知道URL是什么,就可以了。