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

如何强制Feign使用指定content-type获取JSON格式响应

Feign强制返回JSON格式响应的三种可行方案
  • 方案1:在Feign客户端接口/方法上显式声明@Produces注解
    直接在你的Feign客户端接口(或对应调用方法)上添加@Produces("application/json")注解,JAXRSContract处理时会优先采用客户端定义的Produces值,请求头的Accept会自动设置为application/json,覆盖默认读取的服务端全量Produces配置,服务端会优先返回JSON格式响应。
    代码示例:

    @Produces("application/json")
    public interface RemoteUserService {
        // 接口方法定义
    }
    
  • 方案2:全局注册Feign请求拦截器统一设置Accept头
    如果你不想逐个修改Feign接口定义,可以自定义RequestInterceptor强制给所有Feign请求添加JSON格式的Accept头,该配置优先级最高,会覆盖默认自动生成的Accept头。
    代码示例:

    public class JsonAcceptHeaderInterceptor implements RequestInterceptor {
        @Override
        public void apply(RequestTemplate template) {
            // 强制设置Accept为JSON格式,覆盖默认的xml+json组合
            template.header("Accept", "application/json");
        }
    }
    

    之后将该拦截器注册到你的Feign客户端配置中即可生效。

  • 方案3:调用时动态指定Accept头
    如果你需要灵活切换返回格式,可以在Feign接口方法的参数中添加@HeaderParam("Accept") String accept,调用时传入application/json即可指定本次请求返回JSON格式,传入text/xml即可返回XML格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 17:06:02