RESTful创建单例资源

时间:2018-05-31 21:08:28

标签: rest api-design

RESTful API的大多数示例都假设您正在处理事物集合,例如

POST /books/ - 创建一本书

GET /books/ - 获取图书清单

GET /books/1/ - 获取一本特定的书

但是,在某些情况下,您可能希望创建单例资源。例如,新用户可能希望创建与他们自己相关的配置文件,即经过身份验证的用户。

POST /profile

PUT /profile

是否有关于如何创建此类单例资源的约定?即使用POST vs PUT。在是否使用POSTPUT方面,如果可以在创建后修改资源,它会有所作为吗? PUT的幂等性要求是否必须能够在首次创建资源后更新资源?

1 个答案:

答案 0 :(得分:0)

请记住,在REST中,“单一”资源并不意味着系统中仅存在该资源的一个实例,而只是意味着检索单个对象而不是对象列表。

  

资源可以是单例或集合。例如,“客户”是集合资源,“客户”是单例资源(在银行域中)。我们可以使用URN“ / customers”来识别“ customers”集合资源。我们可以使用URN“ / customers / {customerId}”来识别单个“客户”资源。

     

(Thoughtworks,Rest API Design: Resource Modeling

标准做法是让客户端从POST/profiles /,在文件的/profiles/<id>标头中接收新创建的配置文件的URL(可能是Location:)。响应。

或者,客户端可以PUT/profiles/<some client-specified-ID>接收403 Forbidden(如果该ID已被另一个用户使用)。 (如果其他用户的个人资料可以GET,则可能为405 Method Not Allowed。)

在阅读方面,在RESTful API中为具有未知ID的“我的个人资料”概念建模并不常见。如果您确实需要它,那么也许RESTful要做的是使用自定义链接关系在根资源中的链接中公布(标识的)URL。