Swagger2 basePath路径问题,项目路径context-path重复 直接升级Sagger3.0即可

目录

描述:

解决方案:


这次bug在本地复现后展示出来的。只做简单描述,并提供解决方案。

描述:

1、版本:swagger-version:2.10.5

2、项目路径:项目swagger访问路径localhost:8082/abs/swagger-ui.html

3、context-path设置:abs我在properties定义了context-path

4、真实请求路径为:http://localhost:8082/abs/date

结果 http://localhost:8082/abs/abs/date,项目路径abs重复

探索后原因,这个context-path重复就是swagger版本的一个bug。

解决方案:

1、降低swagger版本,2.7.0就不存在该问题

2、重写bean - PathProvider(方法不太建议)

@Value("${server.servlet.context-path}")
private String servletContextPath;
/**
 * 重写 PathProvider ,解决 context-path 重复问题
 * @return
 */
@Bean
public PathProvider pathProvider() {
    return new DefaultPathProvider() {
        @Override
        public String getOperationPath(String operationPath) {
            operationPath = operationPath.replaceFirst(servletContextPath, "/");
            UriComponentsBuilder uriComponentsBuilder = UriComponentsBuilder.fromPath("/");
            return Paths.removeAdjacentForwardSlashes(uriComponentsBuilder.path(operationPath).build().toString());
        }

        @Override
        public String getResourceListingPath(String groupName, String apiDeclaration) {
            apiDeclaration = super.getResourceListingPath(groupName, apiDeclaration);
            return apiDeclaration;
        }
    };
}

肯定会遇到bean重复问题,因为框架里面已经定义过了,配置一下让bean覆盖即可

spring:
  main:
    #解决swagger 请求路径context-path重复问题时候bean重复注入问题
    allow-bean-definition-overriding: true

3、升级swagger版本,3.0,这个是官方建议的版本

引入依赖

    <!-- swagger -->
    <dependency>
      <groupId>io.springfox</groupId>
      <artifactId>springfox-boot-starter</artifactId>
      <version>3.0.0</version>
    </dependency>

登陆网址:(3.0网址变了)

http://localhost:8082/abs/swagger-ui/index.html

重新调用,问题不在出现

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值