Http 另一个micro服务错误的状态代码400或200

Http 另一个micro服务错误的状态代码400或200,http,Http,我的应用程序目前由两个微服务组成: A.订阅微服务 B.小额支付服务 它还使用另一个外部服务: C.付款提供者 如果用户尝试使用无效的卡号创建订阅(假设他的卡被阻止),C.服务将返回一个200,并将“success”参数设置为“false”(我不处理此服务,因此对此我无能为力) 现在我的问题是,支付(B)和订阅(A)微服务应该返回什么状态码 我不确定它是4**还是200(带有成功参数),因为请求本身是正常的,输入格式是正常的(即使其中的数据无效) 如果请求语法正确-例如,卡号与某些给定的

我的应用程序目前由两个微服务组成:

  • A.订阅微服务
  • B.小额支付服务
它还使用另一个外部服务:

  • C.付款提供者
如果用户尝试使用无效的卡号创建订阅(假设他的卡被阻止),C.服务将返回一个200,并将“success”参数设置为“false”(我不处理此服务,因此对此我无能为力)

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


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

如果请求语法正确-例如,卡号与某些给定的正则表达式匹配,但在另一方面无效,则肯定不应该是
400错误请求
。这是一个很好的要求

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


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

如果请求语法正确-例如,卡号与某些给定正则表达式匹配,但在另一方面无效,则肯定不应该是
400错误请求
。这是一个很好的要求

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


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

在这种情况下,200显然不正确,因为请求未成功


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

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


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

我认为这是最好的答案,http status
Conflict
适用于这些情况。我认为这是最好的答案,http status
Conflict
适用于这些情况。