基于REST的响应状态代码

时间:2014-07-16 08:01:47

标签: c# asp.net rest

我不确定在请求有效时使用什么响应代码但是给定参数没有结果

JSON返回成功的true / false和消息

当我执行GET时,我使用了一些数据:

200 HttpStatusCode.OK

但是,如果没有数据,我仍然应该使用OK并返回JSON成功/消息,或者我应该使用400 HttpStatusCode.BadRequest来表明请求中的内容是坏的。

3 个答案:

答案 0 :(得分:3)

这取决于客户没有结果意味着什么。 通常缺少数据仍然是http 200 ok。

e.g。 /employees等。

但是,对于某些情况,您可以返回 找不到HTTP 404。

特别是当客户希望存在特定资源时。

e.g。 employees/update/32

通常任何其他响应代码(204等)虽然技术上有效且合适,但可能会使客户感到困惑。 此外,如果请求没有任何问题,也不应使用400 Bad Request。

答案 1 :(得分:1)

如果操作成功但确实没有响应数据,请使用状态204 NO CONTENT。如果缺少预期的实体,请返回404 NOT FOUND。如果出现某种内部错误,请返回500 SERVER ERROR

根据HTTP/1.1 spec

  

服务器已完成请求但不需要返回   entity-body,可能想要返回更新的元信息。该   响应可能包括新的或更新的元信息形式   实体标题,如果存在,应该与...相关联   要求的变体。

     

如果客户端是用户代理,它不应该更改其文档视图   从导致请求发送的那个。这个回应是   主要是为了允许在没有的情况下进行动作的输入   但是,导致更改用户代理的活动文档视图   任何新的或更新的元信息应该应用于文档   目前在用户代理的活动视图中。

     

204响应绝不能包含消息体,因此总是如此   由标题字段后的第一个空行终止。

答案 2 :(得分:0)

如果请求没有错,但你没有任何数据(即搜索返回0行),而不是BadRequest

  

当没有其他错误适用时,或者如果确切,则发送BadRequest   错误未知或没有自己的错误代码。

http://msdn.microsoft.com/en-us/library/system.net.httpstatuscode%28v=vs.110%29.aspx