返回身体和Http 204状态是否有效?

Bob*_*way 2 http http-status-codes odata

我们目前正在努力达到OData标准:

http://www.odata.org/developers/protocols/operations

根据此标准,如果对数据执行PUT操作,则应返回204状态代码.标准说:

当处理PUT请求服务器返回状态204(无内容)以指示成功时,不需要响应主体.

现在,根据其他人在其他地方读到的内容,有些地方声称,如果你要返回204,你绝对不应该回复一个反应机构 - 这不是一个是否需要的问题.

问题是我们需要返回一个身体.在这种情况下,我们正在对一批项目执行更新查询,并且部分成功(即一些更新,一些不更新)是可能的.我们想告诉客户失败是什么,而响应机构是我能想到的唯一方法.

那么这样做的"正确"方法是什么呢?我应该甩掉W3C并返回一具尸体吗?或者我应该诋毁OData并返回不同的响应代码?还是有其他可能吗?

Vit*_*SFT 6

对PUT的204响应不是OData服务器的强制要求(注意odata.org不是规范性参考,MS-OData文档是).您可以使用body返回200,在这种情况下,您返回的正文应该是更新实体的序列化(在服务器应用更新之后).事实上,在OData V3中,我们现在支持Prefer标题,它正是这样做的.客户端可以包括带有PUT请求的Prefer头,并要求服务器响应200和更新的实体.


Mik*_*ler 5

我认为你不能返回内容,应该考虑返回一个标题来指示部分完成的命令.

规范说明

204响应绝不能包含消息体,因此总是在头字段之后的第一个空行终止.

您可能还希望采用批处理方法,http://www.odata.org/developers/protocols/batch