欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Springboot2.3.5整合Swagger3.0以及访问swagger首页404的问题

程序员文章站 2022-05-03 10:24:41
...

1.导入Swagger对应的pom.xml文件:

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

aaa@qq.com

Swagger3.0的注解改为@EnableOpenApi,可以自定义SwaggerConfig类,也可以直接加在Springboot启动类上,如果选择SwaggerConfig不要忘记加上@Configuration类,否则不生效。

@EnableOpenApi
@Configuration
public class SwaggerConfig{

    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.OAS_30)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.**.**"))
                .paths(PathSelectors.any())
                .build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("API端接口文档")
                //.description("更多请咨询服务开发者XXX")
                //.contact(new Contact("meritco", "北京", ""))
                .version("1.0")
                .build();
    }
}

3.控制器注解

在控制器上加上如**解:

@Api(tags={"用户操作接口"})
@RestController()
@RequestMapping("/user")
public class UserController {

    @RequestMapping(value = "/hello",method = RequestMethod.GET)
    public String hello(@RequestParam(value = "name") String name) {
        return String.format("Hello %s!", name);
    }
}

4.效果

如果在springboot启动类上加@EnableOpenApi注解,不做任何配置,访问http://10.153.88.238:8085/swagger-ui/index.html会出现如下界面:

Springboot2.3.5整合Swagger3.0以及访问swagger首页404的问题

5.访问swagger-ui/index.html报404

如果在上一步中访问报404,可通过配置静态资源访问路径来解决,资源访问路径取决于springfox-swagger-ui-3.0.0.jarindex.html的位置,下图中红方框路径组合为swagger-ui的访问路径。

Springboot2.3.5整合Swagger3.0以及访问swagger首页404的问题
classpath的配置如下:

@Configuration
public class WebConfig 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");
    }
}

配置后成功访问。