REST放置创建或更新
我想通过以下请求一次性创建或更新项目:REST放置创建或更新,rest,http,put,Rest,Http,Put,我想通过以下请求一次性创建或更新项目: PUT /items/{id} 如果项目已经创建,并且更新后没有内容,我是否应该返回201 Created?或者我应该为两个操作返回相同的状态吗?TL;博士 如果区别对客户不重要,则在这两种情况下都使用200 OK 如果区分很重要,则在创建时使用201 Created,在更新时使用200 OK 细节 有了RESTful设计,就没有单一的、正确的做事方式,但我经常发现它提供了很好的指导 如果您不希望客户机根据响应采取单独的操作,那么返回200 OK总是可以
PUT /items/{id}
如果项目已经创建,并且更新后没有内容,我是否应该返回201 Created
?或者我应该为两个操作返回相同的状态吗?TL;博士
如果区别对客户不重要,则在这两种情况下都使用200 OK
如果区分很重要,则在创建时使用201 Created
,在更新时使用200 OK
细节
有了RESTful设计,就没有单一的、正确的做事方式,但我经常发现它提供了很好的指导
如果您不希望客户机根据响应采取单独的操作,那么返回200 OK
总是可以的,但是如果您认为客户机需要,您可以提供更多信息。请注意,客户可能会对您的API抱有期望,因此一旦您开始提供更多细节,您就无法轻易改变主意
也就是说,如果要返回创建的201
,则根据规范:
响应应包括一个实体,其中包含资源特征和位置列表,用户或用户代理可从中选择最合适的一个
例如,您可以将位置放在location
标题中,但也可以将其放在响应的主体中(但必须记录该主体的结构和内容类型)
当涉及到
204时,没有内容
响应,因此,如果您正在创建一个响应,那么您应该避免这种响应类型,作为对客户的礼貌。答案在第9.6节中明确说明:
如果创建了新资源,则源服务器必须通过201(已创建)响应通知用户代理。如果修改了现有资源,则应发送200(确定)或204(无内容)响应代码,以表明请求已成功完成。根据,您应在更新后返回
200 OK
和新资源。谢谢,在这个答案中,irisius说:201
(如果创建)和200
(如果更新)。两种不同的反应取决于动作。