3、集成 swagger 3.0.0

804 阅读1分钟

大概就是一个能够通过注解自动生成api文档的工具

开始~

  1. pom.xml中的dependencies节点下添加依赖
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-boot-starter</artifactId>
    <version>3.0.0</version>
</dependency>

然后加载一下变更(每次改完依赖都需要)

image.png

  1. 在任意位置新建SwaggerConfig.java,我是放在了src/main/java/com/lazysleep/base/core/config
package com.lazysleep.base.core.config;

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;

@Configuration
@EnableOpenApi
public class SwaggerConfig {
    @Bean
    public Docket docket() {
        return new Docket(DocumentationType.OAS_30)
                .select()
                .apis(RequestHandlerSelectors.any())
                .paths(PathSelectors.any())
                .build()
                .apiInfo(apiInfo());
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("Spring MVC集成Swagger3.0示例")
                .description("Swagger3.0 Demo")
                .version("1.0")
                .build();
    }
}
  1. 在控制器中添加@Api@ApiOperation注解
package com.lazysleep.base.controller;


import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.Map;

@Api(tags = "Foo控制器")
@RestController
@RequestMapping("/foo")
public class FooController {

    @GetMapping("foo")
    @ApiOperation(value = "Foo接口")
    public Map foo() {
        var map = new HashMap<>();
        map.put("data","foooooooooooo~~~");
        return map;
    }

}
  1. 运行报错 Type javax.servlet.http.HttpServletRequest not present

image.png

大概查了一下,说是spring boot版本太高,swagger版本支持不了。问题不大,那就降spring boot版本,到pom.xml中改版本为2.7.8后重新载入

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.7.8</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>
  1. 运行再报错 Failed to start bean 'documentationPluginsBootstrapper'...

又又又查了说配置文件里加一个配置spring.mvc.pathmatch.matching-strategy=ant_path_matcher,也就是application.properties文件。

配置文件除了.properties格式还可以使用.yml格式,所以我选yml。

src/main/resources/application.yml内容如下

spring:
  mvc:
    pathmatch:
      matching-strategy: ant_path_matcher # 配置这个来防止swagger报错
  1. 运行成功不报错后访问http://127.0.0.1:8080/swagger-ui/index.html即可