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

Feign客户端发送PUT请求无法到达控制器返回415状态码求助

Feign调用PUT接口返回415状态码的原因及解决办法

415状态码的核心含义是服务器无法处理请求附带的媒体格式,结合给出的代码,常见原因和对应解决方式如下:

  • 原因1:Feign未正确识别请求体参数,Header配置与实际序列化格式冲突
    你使用的是原生Feign注解,没有显式标注第二个DTO参数为请求体,部分版本的Feign如果同时配置了表单编码器,会默认把自定义对象参数当成表单参数序列化,即使你声明了Content-Type: application/json也会出现格式不匹配。
    解决办法:如果是Spring Cloud OpenFeign环境,给第二个DTO参数添加@RequestBody注解;原生Feign环境可添加@Param("body")注解,同时确认Feign配置了Jackson JSON编码器。
    修正后的Feign代码示例:
    @RequestLine("PUT /merchants/{merchantId}")
    @Headers("Content-Type: application/json")
    MerchantDTO updateMerchant(@Param("merchantId") Long merchantId, @RequestBody PutMerchantDTO putMerchantDTO);
    
  • 原因2:全局Feign拦截器覆盖了Content-Type头
    如果项目中配置了全局Feign请求拦截器,统一给请求设置了Content-Type: application/x-www-form-urlencoded等其他类型的头,会覆盖你在方法上配置的JSON头,导致服务端收到的媒体类型不匹配。
    解决办法:检查全局Feign拦截器逻辑,避免带JSON请求体的请求的Content-Type被覆盖,或者调高方法级Header的配置优先级。
  • 原因3:后端缺少JSON消息转换器
    如果Spring Boot项目做了自定义WebMvc配置,移除了默认的MappingJackson2HttpMessageConverter,会导致后端无法解析application/json格式的请求体,返回415。
    解决办法:检查WebMvc配置类,确保注册了Jackson JSON消息转换器,可正常处理application/json类型的请求。
  • 原因4:传入的PutMerchantDTO参数为null
    如果调用updateMerchant方法时第二个参数传了null,Feign会认为没有请求体,自动移除你配置的Content-Type头,服务端收到无媒体类型的请求就会返回415。
    解决办法:增加参数校验逻辑,确保调用接口时PutMerchantDTO不为空。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 20:45:04