Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
返回包含REST DELETE的实体_Rest_Http - Fatal编程技术网

返回包含REST DELETE的实体

返回包含REST DELETE的实体,rest,http,Rest,Http,我正在实现一个RESTAPI来设置和检索资源 我最初的实现非常简单: 1) PUT-path指定要存储的{id},请求体是要存储的JSON对象,成功时返回200响应 2) GET-path指定要检索的{id},请求主体为空,返回200响应和主体中存储的JSON对象 3) DELETE-path指定要删除的{id},请求正文为空,返回200和空正文(是的,可能应该是204) 然而,一个比我更有影响力的上游方要求我们对JSON对象进行破坏性检索。他们坚持认为,他们不想麻烦进行单独的GET和DELET

我正在实现一个RESTAPI来设置和检索资源

我最初的实现非常简单:

1) PUT-path指定要存储的{id},请求体是要存储的JSON对象,成功时返回200响应

2) GET-path指定要检索的{id},请求主体为空,返回200响应和主体中存储的JSON对象

3) DELETE-path指定要删除的{id},请求正文为空,返回200和空正文(是的,可能应该是204)

然而,一个比我更有影响力的上游方要求我们对JSON对象进行破坏性检索。他们坚持认为,他们不想麻烦进行单独的GET和DELETE调用(也就是说,这与试图确保原子调用以消除竞争条件的人无关)

对我来说,这似乎违反了RESTful服务的精神,当我试图记录这一更改时,API文档有一种明确的“代码味道”,因为当试图清楚地记录GET/DELETE方法时,它会感到尴尬


很明显,我可以实现任何可行的方法,但是否有一个关于破坏性阅读的既定惯例?当然,在某些情况下确实需要原子调用?

他们所要求的与REST无关,但这与HTTP RFC(#7231)相反

如果成功应用了删除方法,则源服务器 如果可能采取行动,则应发送202(已接受)状态代码 成功但尚未颁布,204(无内容)状态 如果行动已颁布且未提供进一步信息,则代码 待提供,或200(正常)状态代码(如果操作已完成) 并且响应消息包含一个表示 描述状态

这很清楚。您可以返回
200(确定)
,但响应中的实体应该是状态对象,而不是已删除的对象。当然,你可能会被欺负去做这件事,办公室政治就是这样。向他们询问您需要违反RFC的经验证的技术原因。不要接受handwavey“太贵”的说法——让他们提供实际的测试用例来证明存在问题


我知道原子读取/删除操作没有定义的语义。在没有更多信息的情况下,很难就如何继续向您提供建议,这可能超出了本网站的范围。

不确定我是否理解您的问题。您的意思是将JSON作为删除响应发送,还是在GET请求中删除对象?问题与您的问题有何不同?