如何基于feign.Response引发异常?

时间:2019-07-02 12:27:40

标签: java response spring-cloud-feign feign

我有一个Feign客户,其方法返回了add_filter("wc_price","addtext",10,4); function addtext($return, $price, $args, $unformatted_price){ if(is_product_category() || is_shop() || is_product()){ $return = 'like Preis:'.$return; } return $return; } 类。当另一个服务引发异常时,feign.Response会将异常消息放在响应正文上并置于状态,但是我的服务不会引发异常。我可以根据收到的响应(例如,当我使用feign时)抛出异常。

假客户

ResponseEntity

客户的使用

@FeignClient(name = "ms-filestorage")
@RequestMapping(value = "/files", produces = "application/json")
public interface FileStorageApi {

    @GetMapping(value = "/{id}")
    Response getFileById(@PathVariable String id);
}

1 个答案:

答案 0 :(得分:0)

通常,如果Feign客户端调用从其所调用的API收到错误响应,则会抛出FeignException

这可以放在try / catch块中(或者如果想要更复杂的话,可以使用Feign ErrorDecoder,但这是另一篇文章)。

但是,如果将错误响应映射到Feign.Response返回类型中则不是这种情况-请参见this Github issue

您应该创建一个自定义Java对象来保存响应,而不是从Feign.Response返回getFileFromStorage(),然后您就可以访问FeignException了,您可以根据需要对其进行处理。

请注意,如果您不需要访问所调用的API返回的数据,则将返回类型更改为void也可以解决此问题。