RESTful POSTS,你将对象POST到单数或复数Uri吗?

Arr*_*n S 40 rest restful-url

这些URI中的哪一个更适合接收POST(添加产品)?是否有最佳实践或仅仅是个人偏好?

/ product /(singular)

要么

/ products /(复数)

目前我们/products/?query=blah用于搜索/product/{productId}/单个产品的GETs PUT和DELETE.

Rob*_*ska 27

由于POST是一种"追加"操作,因此您可能会将/products新产品附加到现有产品列表中,因此POST 可能会更加英语化.

只要您对API中的某些内容进行了标准化,我认为这就足够了.

由于REST API应该是超文本驱动的,因此无论如何URI都相对无关紧要.客户端应该从返回的文档中提取URI并在后续请求中使用这些URI; 通常,应用程序和人员不需要猜测或可视地解释URI,因为应用程序将明确地指示客户端可用的资源和URI.

  • @Rob Hruska/@ Darrel Miller:Acckk!单一URL会增加复杂性并导致人们以不符合其用法的方式思考URL.URL不应该被视为一个句子,而应该被视为一个层次结构; "/ products/15"是唯一应该考虑的,IMO. (12认同)
  • @Mike我认为有更重要的事情需要争论,而不是URL的语法正确性.话虽如此,我保留了用于子集化的集合资源的子资源.例如/产品/过时或/ Products/Hot,或Products/RecentlyViewed (2认同)

Gre*_*ech 11

通常,如果您事先不知道资源的标识符,则使用POST来创建资源,而在执行此操作时则使用PUT.所以你要发布到/ products,或者PUT到/ products/{new-id}.

使用这两个文件,您将返回201 Created,并且POST还会返回包含新创建资源的URL的Location标头(假设已成功创建).