springboot整合swagger3报Unable to infer base url错误问题

 更新时间:2024年05月22日 10:47:17   作者:天国的囚徒  
这篇文章主要介绍了springboot整合swagger3报Unable to infer base url错误问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

springboot整swagger3

工程中的pom文件加入依赖包

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

代码中配置Swagger3Config

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.oas.annotations.EnableOpenApi;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;

/**
 * 说明:Swagger 接口API生成
 * 作者:wanghan
 */
@Configuration
@EnableOpenApi
public class Swagger3Config {

    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.OAS_30)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.wanghan.ctrl"))    // 为当前包路径
                .paths(PathSelectors.any())
                .build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("Swagger3 RESTful API")    // 页面标题
                .version("3.0")                                // 版本号
                .description("接口文档")                    // 描述
                .build();
    }
}

Swagger 拦截配置

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * 说明:Swagger 拦截配置
 * 作者:wanghan
 */
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.
                addResourceHandler("/swagger-ui/**")
                .addResourceLocations("classpath:/META-INF/resources/webjars/springfox-swagger-ui/")
                .resourceChain(false);
    }

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/swagger-ui/")
                .setViewName("forward:/swagger-ui/index.html");
    }
}

至此swagger已经配置到你的项目中了。

可以通过url访问了:

http://localhost:8080/swagger-ui/index.html

总是不那么顺利

然而在使用过程中,总是出现这个那个问题:

问题一:提示没有权限访问

如果你使用安全框架,Swagger3的内置接口就会访问受限,我们需要排除掉。

Spring Security是这么配置的:

@Override
public void configure(WebSecurity web) throws Exception {
    //忽略swagger3所需要用到的静态资源,允许访问
    web.ignoring().antMatchers( "/swagger-ui.html",
            "/swagger-ui/**",
            "/swagger-resources/**",
            "/v2/api-docs",
            "/v3/api-docs",
            "/webjars/**");
}

或者你使用的版本是Spring Security 5.4,你可以这么定制​​WebSecurity

@Bean
WebSecurityCustomizer swaggerWebSecurityCustomizer() {
    return (web) -> {
        web.ignoring().antMatchers(new String[]{"/swagger-ui.html", "/swagger-ui/**", "/swagger-resources/**", "/v2/api-docs", "/v3/api-docs", "/webjars/**"});
    };
}

问题二:报​​Unable to infer base url

你会发现Swagger3会报​​Unable to infer base url的错误,这是因为统一返回体影响到了Swagger3的一些内置接口。

解决方法是​​

@RestControllerAdvice​​​控制好生效的包范围,在你的实现类上加上basePackages = “项目包路径”

@ControllerAdvice(basePackages = "com.wanghan")
public class ApiResBodyAdvice implements ResponseBodyAdvice {
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java基础MAC系统下IDEA连接MYSQL数据库JDBC过程

    Java基础MAC系统下IDEA连接MYSQL数据库JDBC过程

    最近一直在学习web项目,当然也会涉及与数据库的连接这块,这里就总结一下在IDEA中如何进行MySQL数据库的连接,这里提一下我的电脑是MAC系统,使用的编码软件是IDEA,数据库是MySQL
    2021-09-09
  • IDEA的TODO的使用方式

    IDEA的TODO的使用方式

    这篇文章主要介绍了IDEA的TODO的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • 使用@EnableWebMvc轻松配置Spring MVC

    使用@EnableWebMvc轻松配置Spring MVC

    这篇文章主要为大家介绍了使用@EnableWebMvc轻松配置Spring MVC实现示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10
  • 128进制加密数据示例分享

    128进制加密数据示例分享

    这篇文章主要介绍了128进制加密数据示例,这里使用JAVA实现,需要的朋友可以参考下
    2014-03-03
  • 如何将Spring Session存储到Redis中实现持久化

    如何将Spring Session存储到Redis中实现持久化

    这篇文章主要介绍了如何将Spring Session存储到Redis中实现持久化,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-07-07
  • java8新特性将List中按指定属性排序过滤重复数据的方法

    java8新特性将List中按指定属性排序过滤重复数据的方法

    这篇文章主要介绍了java8新特性将List中按指定属性排序过滤重复数据的方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • SpringBoot实现使用反射模拟IOC和getBean

    SpringBoot实现使用反射模拟IOC和getBean

    这篇文章主要介绍了SpringBoot实现使用反射模拟IOC和getBean,IOC就是spring的核心思想之一——控制反转。这里不再赘述,看此文章即可了解
    2023-04-04
  • Java中LinkedList的模拟实现

    Java中LinkedList的模拟实现

    本文主要介绍了Java中LinkedList的模拟实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • idea同步yapi插件的详细步骤

    idea同步yapi插件的详细步骤

    yapi是一个很好的接口文档维护工具,其swagger功能,可将接口信息同步到yapi平台上,这篇文章主要介绍了idea同步yapi插件,需要的朋友可以参考下
    2024-04-04
  • java的三种随机数生成方式

    java的三种随机数生成方式

    主要介绍了java的三种随机数生成方式的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,,需要的朋友可以参考下
    2021-07-07

最新评论