我有一个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);
}
答案 0 :(得分:0)
通常,如果Feign客户端调用从其所调用的API收到错误响应,则会抛出FeignException
。
这可以放在try / catch块中(或者如果想要更复杂的话,可以使用Feign ErrorDecoder
,但这是另一篇文章)。
但是,如果将错误响应映射到Feign.Response
返回类型中则不是这种情况-请参见this Github issue。
您应该创建一个自定义Java对象来保存响应,而不是从Feign.Response
返回getFileFromStorage()
,然后您就可以访问FeignException
了,您可以根据需要对其进行处理。
请注意,如果您不需要访问所调用的API返回的数据,则将返回类型更改为void
也可以解决此问题。