状态代码400或200表示另一个微服务

时间:2015-11-05 10:24:50

标签: http

我的申请目前由两个微服务组成:

  • 甲。订阅微服务
  • B中。付款微服务

它还使用其他外部服务:

  • ℃。付款提供商

如果用户尝试使用无效的卡号创建订阅(让我们说他的卡被阻止),C。服务将返回200,并且成功"参数为" false" (我不会处理这项服务,所以我无法做任何事情。)

现在我的问题是,付款(B)和订阅(A)微服务应该返回什么状态代码?

我不确定它是4 **还是200(带有成功参数),因为请求本身没问题,输入格式正常(即使其中的数据无效) 。

2 个答案:

答案 0 :(得分:3)

在这种情况下,200显然是不正确的,因为请求并不成功。

我在这种情况下的建议是HTTP 422 Unprocessable Entity,它在WebDAV中定义但是被广泛理解,并指示该请求在语法上有效但具有阻止成功处理的语义错误。

答案 1 :(得分:1)

如果请求在语法上是正确的 - 例如卡号与某些给定的正则表达式匹配,但在另一种方式中无效,它绝对不应该是400 Bad Request。这不是一个糟糕的要求。

它也不应该返回任何2XX代码,因为这些代码专门用于成功的响应,并且 - 正如您在正文success = false中设置的不是成功处理的请求。

最合适的代码将是409 Conflict以及描述问题的明确消息。它表示请求失败,澄清原因并明确说明在纠正请求后可以重新提交。