内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用
我正在创建一个RESTful API,用于处理大量的用户交互,包括使用存储的信用卡下订单。
在订单成功的情况下,我返回200 OK,如果订单请求格式不正确或无效,我将返回400错误请求。但是,如果在订单的实际处理过程中出现问题,我应该返回什么?
最后一步是问题 - 如果订单因其他原因未能完成,我将返回什么?可能的情况可能包括:
这似乎不适合400或500.如果没有更好的代码,我可以将其视为400 - 根据业务规则,请求无效。这似乎并不准确。
应该使用400作为业务规则。如果订单未被接受,请不要退回2xx。HTTP是一种应用协议,永远不会忘记这一点。如果你返回2xx,客户可以假定订单已被接受,而不管你在正文中发送的任何信息。
某些Web服务所犯的一个常见错误是返回一个反映成功的状态代码(状态代码从200到206,从300到307),但包含描述错误情况的消息主体。这样做可以防止HTTP感知软件检测到错误。例如,缓存会将其存储为成功响应,并将其提供给后续客户端,即使客户端可能能够发出成功的请求。
我会让你决定在4xx和5xx之间,但你应该使用错误状态码。