【OpenFeign报错排查】Could not extract response: no suitable HttpMessageConverter found for response type
·
起因:当调用get方法时,报错Could not extract response: no suitable HttpMessageConverter found for response type,解释就是无法序列化成Result,也就是返回值根本就不是一个json或者不是你需要的Result对象,通过对get2和get3方法的验证,发现get3方法返回值是一个500异常报错(也可以通过开启feign日志排查)
@FeignClient(value = "ai-agent-system",configuration = FeignConfiguration.class)
public interface SysUserServiceFeign {
@GetMapping("/user/get")
public Result<SysUserDO> get(String userId);
@GetMapping("/user/get2")
public SysUserDO get2(String userId);
@GetMapping("/user/get3")
public String get3(String userId);
}
解决:此处我的异常是因为在服务中需要token访问,也就是在请求头加上token,然后再次请求feign,OK!
添加过滤器
FeignConfiguration.class
@FeignClient(value = "ai-agent-system",configuration = FeignConfiguration.class)
public interface SysUserServiceFeign {
@GetMapping("/user/get")
public Result<SysUserDO> get(String userId);
@GetMapping("/user/get2")
public SysUserDO get2(String userId);
@GetMapping("/user/get3")
public String get3(@RequestParam("userId") String userId);
}
@Slf4j
@Configuration
public class FeignConfiguration implements RequestInterceptor{
@Override
public void apply(RequestTemplate requestTemplate) {
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
if(null != attributes) {
HttpServletRequest request = attributes.getRequest();
String token = request.getHeader("Authorization");
log.info("token{}",token);
requestTemplate.header(SaSameUtil.SAME_TOKEN, SaSameUtil.getToken());
}
log.info("feign interceptor header:{}",requestTemplate);
}
}
更多推荐
已为社区贡献3条内容
所有评论(0)