后端API接口文档Swagger的使用

Swagger是什么

  • Swagger是一款RESTFUL接口的文档在线自动生成+功能测试的功能软件
  • Swagger是一个规范和完整的框架,用于生成、描述、调用和可视化RESTful风格的Web服务
  • 目标是使客户端和文件系统作为服务器以同样的速度来更新文件的方法,参数和模型紧密集成到服务器

如何使用Swagger2

引入swagger的依赖

        
            io.springfox
            springfox-swagger2
            2.9.2
        
        
            io.springfox
            springfox-swagger-ui
            2.9.2
        

springboot整合swagger

//配置类
@Configuration
@EnableSwagger2
public class SwaggerConfig {
    @Bean
    public Docket creatRestApi(){
        return  new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo()) // 用于生成API信息
                .select() // select()函数返回一个ApiSelectorBuilder实例,用来控制接口被swagger做成文档
                .apis(RequestHandlerSelectors.basePackage("com.example.swaggerdemo.controller"))//指定扫描路径
                .paths(PathSelectors.any())
                .build();
    }
    //定义主界面api信息
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("小程序")
                .description("SwaggerAPI文档")
                .termsOfServiceUrl("")
                .version("1.0")
                .build();
    }
}

使用Swagger

@RequestMapping("/user")
@RestController
@Api(tags="用户管理")
public class UserController {
   @PostMapping("/get")
   @ApiOperation("查询用户")
   @ApiImplicitParam(name="id",value = "用户编号",required = true)
   public User getUser(@RequestParam(required = true) Long id){
    User user=new User();
    user.setId(id);
    user.setName("小兵");
    user.setAge(20);
    user.setHigh("180cm");
    user.setHeight("70公斤");
    user.setAddress("西岐");
    return  user;
}
}

访问本地链接localhost:8080/swagger-ui.html

后端API接口文档Swagger的使用_第1张图片

后端API接口文档Swagger的使用_第2张图片

后端API接口文档Swagger的使用_第3张图片

 配置swagger时遇到的问题

  Failed to start bean ‘documentationPluginsBootstrapper‘; nested exception is java.lang.NullPointerException

原因分析 

  •  swagger版本和springboot出现了不兼容情况
  • SpringBoot处理映射匹配的默认策略发生变化,即请求路径与SpringMVC处理映射匹配的默认策略已从AntPathMatcher更改为PathPatternParser

 解决方法

方案一 在 application.properties 配置文件添加配置:
spring.mvc.pathmatch.matching-strategy=ant_path_matcher

方案二 在 配置类 添加注解@EnableWebMvc

后端API接口文档Swagger的使用_第4张图片

 方案三 根据实际,降低SpringBoot版本
我个人推荐第一种和第二种

Swagger3的使用

改变了依赖

  
            io.springfox
            springfox-boot-starter
            3.0.0
        

改变了注解以及配置中的部分内容

//配置类
@Configuration
@EnableOpenApi
public class SwaggerConfig {
    @Bean
    public Docket creatRestApi(){
        return  new Docket(DocumentationType.OAS_30)
                .apiInfo(apiInfo()) // 用于生成API信息
                .select() // select()函数返回一个ApiSelectorBuilder实例,用来控制接口被swagger做成文档
                .apis(RequestHandlerSelectors.basePackage("com.example.swaggerdemo.controller"))//指定扫描路径
                .paths(PathSelectors.any())
                .build();
    }
    //定义主界面api信息
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("小程序")
                .description("SwaggerAPI文档")
                .termsOfServiceUrl("")
                .version("1.0")
                .build();
    }
}

改变了本地链接localhost:8080/swagger-ui/

后端API接口文档Swagger的使用_第5张图片

遇到的警告信息

 WARN 14976 --- [           main] d.s.r.o.OperationImplicitParameterReader : Unable to interpret the implicit parameter configuration with dataType: , dataTypeClass: class java.lang.Void

这对整体没什么影响,但是就是有点别扭,怎么解决

@ApiImplicitParam注解上加上dataTypeClass属性的值,

下次再见!

你可能感兴趣的:(springboot篇,spring,boot,java)