用于将记录添加到记录的RESTful URL

用于将记录添加到记录的RESTful URL,rest,Rest,将子记录添加到父记录的操作的正确“RESTful”URL是什么 例如,如果我想提供一个URL,用于将“comment”记录添加到“order”记录中,我应该如何格式化它 我的第一个想法是: PUT http://example.com/order/12345/comment/add 我在Django工作,它使用类似的模式,所以这似乎是最直观的。然而,阅读一些RESTful设计指南表明,这可能是一种不好的做法,因为他们认为“PUT”和“add”是多余的,因此可能会造成混淆。url的PUT操作和a

将子记录添加到父记录的操作的正确“RESTful”URL是什么

例如,如果我想提供一个URL,用于将“comment”记录添加到“order”记录中,我应该如何格式化它

我的第一个想法是:

PUT http://example.com/order/12345/comment/add

我在Django工作,它使用类似的模式,所以这似乎是最直观的。然而,阅读一些RESTful设计指南表明,这可能是一种不好的做法,因为他们认为“PUT”和“add”是多余的,因此可能会造成混淆。

url的PUT操作和add部分是多余的。但这一切都没有硬性规定。我看到API有这种形式,甚至来自主要的供应商,有时只是简单地说“put操作和uri段是冗余的”,有时我什么也不说,只是调用端点。如果我正在编写api,我可能会省略添加部分。

url的put操作和添加部分是多余的。但这一切都没有硬性规定。我看到API有这种形式,甚至来自主要的供应商,有时只是简单地说“put操作和uri段是冗余的”,有时我什么也不说,只是调用端点。如果我正在编写api,我可能会停止添加部分。

我将执行以下操作:

POST http://example.com/order/12345/comment

我会这样做:

POST http://example.com/order/12345/comment

有几点可以让您的请求变得RESTful:

1) 在URL中使用复数形式的资源名称,而不是单数形式(顺序而不是顺序)

2) 切勿在URL中使用操作名称,如“评论/添加”中的(添加)

3) 由于您在不知道任何手的ID的情况下添加“新”注释,因此应该使用POST请求

最后,我推荐的URL是:

HttpVerbs=POST


这将为您的订单添加一条新的注释#12345

1) 在URL中使用复数形式的资源名称,而不是单数形式(顺序而不是顺序)

2) 切勿在URL中使用操作名称,如“评论/添加”中的(添加)

3) 由于您在不知道任何手的ID的情况下添加“新”注释,因此应该使用POST请求

最后,我推荐的URL是:

HttpVerbs=POST


这应该会给你的订单增加一条新的评论#12345

你的问题没有一刀切的答案。RESTURL可以是您想要的任何内容。最终,它们是映射到方法的路由。我不会太担心“最佳”URL。我更喜欢找到一个适合我的标准,然后转向更大、更重要的事情。只要客户知道URL是什么,他们就可以了。

对于您的问题,没有一刀切的答案。RESTURL可以是您想要的任何内容。最终,它们是映射到方法的路由。我不会太担心“最佳”URL。我更喜欢找到一个适合我的标准,然后转向更大、更重要的事情。只要客户知道URL是什么,他们就可以了。

但这仍然比
/order/12345/add_comment
更好,对吧?在我看来/add_comment看起来像某种实体(这不是你的意图,所以我可能认为它会误导你,而不仅仅是多余的)。但这仍然比
/order/12345/add_comment
更可取,对吗?在我看来/add_comment看起来像某种实体(这不是你的意图,所以我可能认为它会误导,而不仅仅是多余的)。没有“RESTful URL”这样的东西。REST是关于链接而不是URL的。没有“RESTfulURL”这样的东西。REST是关于链接而不是URL的。如果在服务器上生成注释id,则使用POST方法。如果在服务器上生成注释id,则使用POST方法。如果在URL中未指定操作,则如何区分操作?e、 g.“添加”与“删除”?将其重新定位到POST参数似乎非常不直观,并且有潜在的危险。您的$\u服务器['REQUEST\u METHOD']将告诉您正在使用的方法。您将使用后端中的操作映射该请求。还有其他方法可以实现这一点。请仔细阅读。同时阅读评论。这很有帮助。你也可以使用路线管理器,我也发现了这个。如果您没有在URL中指定操作,那么如何区分操作?e、 g.“添加”与“删除”?将其重新定位到POST参数似乎非常不直观,并且有潜在的危险。您的$\u服务器['REQUEST\u METHOD']将告诉您正在使用的方法。您将使用后端中的操作映射该请求。还有其他方法可以实现这一点。请仔细阅读。同时阅读评论。这很有帮助。你也可以使用路线管理器,我也发现了这个。