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

SpringDoc/Swagger UI URL显示异常,如何禁用context-path自动追加?

解决方案:禁用SpringDoc Swagger UI自动追加context-path

针对你遇到的Swagger UI自动拼接context-path导致路径错误的问题,有两种可行的解决方式:

方法1:使用绝对/协议相对路径配置swagger-ui.url

SpringDoc会对相对路径格式的swagger-ui.url自动追加context-path,改用绝对路径或协议相对路径即可绕过这个逻辑:

修改application.yaml中的SpringDoc配置:

springdoc:
  swagger-ui:
    path: /swagger
    disable-swagger-default-url: true
    # 使用协议相对路径(适配http/https环境)
    url: //service-api/api/service/swagger.json
    # 或者使用完整绝对路径(指定域名)
    # url: http://your-deployment-domain/service-api/api/service/swagger.json
  api-docs:
    path: /swagger.json

方法2:自定义配置类强制设置URL

如果不想使用绝对路径,可以通过自定义配置类直接覆盖Swagger UI的URL配置,跳过context-path的自动拼接逻辑:

创建配置类:

import org.springdoc.core.properties.SwaggerUiConfigProperties;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
@EnableConfigurationProperties(SwaggerUiConfigProperties.class)
public class CustomSwaggerUiConfig {

    @Bean
    public SwaggerUiConfigProperties swaggerUiConfigProperties() {
        SwaggerUiConfigProperties config = new SwaggerUiConfigProperties();
        config.setPath("/swagger");
        config.setDisableSwaggerDefaultUrl(true);
        // 直接设置目标路径,不触发context-path拼接
        config.setUrl("/service-api/api/service/swagger.json");
        return config;
    }
}

原理说明

SpringDoc默认逻辑是:当springdoc.swagger-ui.url配置为相对路径(以/开头但不含协议/域名)时,会自动将server.servlet.context-path拼接到路径前方,导致你遇到的/api/service/service-api/api/service/swagger.json错误路径。使用绝对路径或自定义配置类可以绕过该默认拼接逻辑,直接使用你指定的正确路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 07:35:24