调用指定Feign接口仅返回HTTP状态码,方法返回类型该如何定义?
Feign客户端仅获取HTTP状态码的返回类型选择
如果你只想获取接口调用的HTTP状态码,有两种常用且严谨的返回类型可选:
1. 使用ResponseEntity<Void>
这是Spring生态下最常用的方案,ResponseEntity会封装HTTP响应的状态码、头信息等元数据,Void类型明确表示不需要解析响应体,完全匹配你只获取状态码的需求。修改后的代码如下:
@FeignClient(name = "abc_abc", url = "${abc.host}") public interface ValidateClient { @PostMapping(path = "/api/abc/validate", consumes = "application/json", produces = "application/json") ResponseEntity<Void> validateResponse(@RequestHeader HttpHeaders httpHeaders, @RequestParam Map<String, Object> params, @RequestBody String request); }
调用后,你可以通过responseEntity.getStatusCodeValue()获取整数格式的状态码,或通过responseEntity.getStatusCode()获取枚举类型的状态码。
2. 使用Feign原生Response
如果想直接使用Feign的原生API,可返回feign.Response,它同样包含状态码、响应头信息,你可以忽略响应体部分。代码示例:
import feign.Response; @FeignClient(name = "abc_abc", url = "${abc.host}") public interface ValidateClient { @PostMapping(path = "/api/abc/validate", consumes = "application/json", produces = "application/json") Response validateResponse(@RequestHeader HttpHeaders httpHeaders, @RequestParam Map<String, Object> params, @RequestBody String request); }
调用后通过response.status()即可获取状态码。
注意:不建议直接返回Integer,因为Feign会默认尝试将响应体解析为Integer类型,若接口响应体不是纯数字格式,会抛出解析异常,这种方式不够严谨。
内容的提问来源于stack exchange,提问作者user18665270
相关产品推荐
相关产品推荐

