首页 > 解决方案 > 更正外部服务中重复文档的 HTTP 状态

问题描述

我正在为继承服务开发 api 网关服务,客户将支付订单发送到网关,网关将订单发送到遗留服务。每个付款订单都带有一个跟踪密钥,旧服务使用此密钥检查订单是否重复。如果订单重复,旧服务会向我发送状态 200,我需要在响应中查找错误属性,但客户端可以更改跟踪键并重试,所以我正在考虑更改该错误的响应在网关中并且没有成功响应,但是我不确定这是否是正确的方法以及向客户端抛出什么错误,一开始我在考虑 BadGatewayException,因为错误在遗留服务中。

标签: http-errorapi-gatewayhttpexception

解决方案


我认为 409 的 Http 状态代码适合这种情况,因为您正在尝试创建服务器上已经存在的订单。由于用户更改跟踪 ID 解决了冲突,我会说返回 409。

请参阅文档以获取 HTTP 状态代码 409

由于与资源的当前状态冲突,无法完成请求。仅在预期用户可能能够解决冲突并重新提交请求的情况下才允许使用此代码。响应正文应该包含足够的信息让用户识别冲突的来源。理想情况下,响应实体将包含足够的信息供用户或用户代理解决问题;但是,这可能是不可能的,也不是必需的。冲突最有可能在响应 PUT 请求时发生。例如,如果正在使用版本控制并且被 PUT 的实体包括对资源的更改,这些更改与早期(第三方)请求所做的更改相冲突,则服务器可能会使用 409 响应来指示它无法完成请求. 在这种情况下,

参考:HTTP 状态代码定义


推荐阅读