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

Spring Boot默认返回类型配置及带produces接口406错误咨询

问题分析与解决方案

你的问题核心是:全局配置的默认内容类型(JSON)和接口指定的produces类型(二进制流)不匹配,导致Spring无法找到符合要求的响应类型,返回406错误。

原因说明

当接口设置了produces属性后,Spring会严格限定该接口允许返回的内容类型。尽管你开启了ignoreAcceptHeader=true,但全局配置的defaultContentType(MediaType.APPLICATION_JSON)不在该接口produces的允许范围内,因此请求匹配失败,触发406(Not Acceptable)错误。

解决办法

你可以通过路径匹配的默认内容类型策略适配不同接口的需求,让全局配置根据请求路径自动切换默认类型:

@Override
public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
    configurer.ignoreAcceptHeader(true)
              .defaultContentTypeStrategy(request -> {
                  // 根据请求路径判断要使用的默认内容类型
                  String requestUri = request.getRequestURI();
                  if (requestUri.startsWith("/test/")) {
                      return Collections.singletonList(MediaType.APPLICATION_OCTET_STREAM);
                  }
                  // 其他接口默认返回JSON
                  return Collections.singletonList(MediaType.APPLICATION_JSON);
              });
}

配置后,访问/test/{testId}路径时,默认内容类型会自动切换为APPLICATION_OCTET_STREAM,和接口的produces属性匹配,不会再出现406错误;其他未指定produces的接口依然保持JSON作为默认类型。

补充说明

如果你的二进制流接口不止这一个,也可以通过更通用的规则(比如路径包含attachment、download等关键词)来匹配,或者为这类接口单独配置内容协商规则,只要确保默认类型落在接口produces的允许范围内即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 09:35:15