You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Feign Client调用报400错误无法将响应转换为自定义对象如何解决

问题根因

你遇到的400错误属于请求层面错误,和响应结果反序列化逻辑无关,你的MyClass定义、ObjectMapper转JSON逻辑都没有问题,错误根因为以下两点:

  1. Feign接口未指定请求的媒体类型:你当前的@RequestMapping注解仅配置了produces(指定接口响应的媒体类型),缺少consumes配置声明请求体的媒体类型。当你传入String类型的@RequestBody参数时,Feign默认会用text/plain作为Content-Type发送请求,而被调用的服务端接口要求请求的Content-Type必须为application/json,因此直接返回400拒绝请求。
  2. 小概率场景:你传入的query字符串本身不是合法JSON格式,服务端解析请求体失败返回400。
解决方案
  • 第一步:给Feign接口的@RequestMapping注解添加consumes配置,指定请求媒体类型为JSON,修改后代码如下:
@FeignClient(name = "service")
public interface ServiceClient {
  @RequestMapping(method = RequestMethod.POST, value = "/url",
      produces = MediaType.APPLICATION_JSON_UTF8_VALUE,
      consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
  @ApiOperation(value = "process")
  List<MyClass> select(@RequestBody String query);
}
  • 第二步:校验你传入的query字符串格式,确保为合法JSON,不存在语法错误。
  • 第三步(可选排查手段):如果修改后仍报错,开启Feign的请求日志打印功能,查看实际发出的请求头、请求体内容定位问题。开启方式为在配置中设置Feign日志级别为FULL,同时注入对应配置Bean:
@Configuration
public class FeignConfig {
    @Bean
    Logger.Level feignLoggerLevel() {
        return Logger.Level.FULL;
    }
}

内容的提问来源于stack exchange,提问作者david

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 16:27:03