什么HTTP状态用于良好的请求"坏"输入?

时间:2015-05-11 01:58:50

标签: api http http-status-codes http-status-code-400 http-status-code-200

我正在编写一个用于验证促销代码的微服务。客户端向我发送促销代码和产品ID(json)。有200好的情况下代码是好的,我为他们的订单申请折扣。但是有一个错误的例子,促销代码并不适用于此产品。我不确定要使用哪种响应代码。

这也应该是200 OK(有某种消息说代码验证失败了吗?)

应该是400 Bad Request?

似乎两者都不合适,但是当它不是" OK"然而4x通常用于表示请求/ http的结构有问题时,它很难说200 OK协议 - 在这种情况下,请求的结构很好。

2 个答案:

答案 0 :(得分:3)

我将是第二个史蒂夫斯。 422似乎是一个不错的选择。

恕我直言,如果请求失败,你绝不应该使用200.

使用错误代码&如有必要,请在回复正文中提供详细信息:

HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json

{ "reason": 1, "text": "Invalid promo code." }

第二个想法,我认为403非常适合这里:

HTTP/1.1 403 Forbidden
Content-Type: application/json

{ "reason": "bad_promo_code" }

最终,it doesn't matter只要记录在案。

答案 1 :(得分:0)

我会建议409:

  

10.4.10 409冲突

     

由于与当前冲突,请求无法完成   资源状态。此代码仅在以下情况下允许   预计用户可能能够解决冲突   重新提交请求。