swagger配置扫描接口、扫描路径条件

2022-08-07 10:39:58

当我们需要扫描指定的包下的接口,然后生成该包下的API,那我们要怎么配置呢?

创建swagger的springboot项目

创建项目

Docket.select().xxx.build()

在Docket类中有select() 方法,该方法需要与build() 一起使用。

@Beanpublic Docketdocket(){returnnewDocket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()// 中间配置扫描接口条件/扫描路径条件.build();// build:工厂模式}

为什么这两个方法要一起使用呢?

  • select() 返回的是一个ApiSelectorBuilder对象,而我们需要的却是Docket对象,因此,ApiSelectorBuilder类中提供了一个方法 ------->build()build() 方法返回的是一个Docket对象。

所以这两个方法需要一起使用。

配置扫描接口条件

@Beanpublic Docketdocket(){returnnewDocket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()/*
           * RequestHandlerSelectors 可使用的扫描条件:
           *    basePackage() --- 只扫描指定路径上的类
           *    any() --- 扫描所有类
           *    withClassAnnotation() --- 通过判断类上的注解中有xxx注解扫描类
           *    withMethodAnnotation() --- 通过判断方法上的注解中有xxx注解扫描方法
           * */.apis(RequestHandlerSelectors.basePackage("com.sky.controller"))// 让swagger只扫描 com.sky.controller 包下的api.build();}

controller 中只有一个HelloController,里面只有一个@GetMapping("/hello") 请求映射,满足com.sky.controller包条件,生成API

basePackage

配置扫描路径条件

@Beanpublic Docketdocket(){returnnewDocket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()/*
           * PathSelectors 可使用的 mapperHandler 路径匹配的方法:扫描匹配成功的路径,生成API
           *    any() --- 匹配所有的路径
           *    ant() --- 匹配传入参数的路径
           *    regex() --- 通过正则表达式匹配路径
           * */.paths(PathSelectors.ant("/hello/**"))// 设置过滤的 mapperHandler 路径,满足条件则扫描api;/hello/** 包含/hello.build();}

controller中只有一个HelloController,里面只有一个@GetMapping("/hello") 请求映射,不满足/hello/** 条件,因此没有API生成。

配置扫描接口、扫描路径条件可一起使用

@Beanpublic Docketdocket(){returnnewDocket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select().apis(RequestHandlerSelectors.basePackage("com.sky.controller")).paths(PathSelectors.ant("/hello/**")).build();// build:工厂模式}

此时swagger会扫描com.sky.controller包下的类并且满足/hello/** 路径,生成API。

因为controller中只有一个HelloController,里面只有一个@GetMapping("/hello") 请求映射,满足com.sky.controller 包条件,但是不满足/hello/** 条件,因此没有API生成。
在这里插入图片描述

  • 作者:呐呐呐-
  • 原文链接:https://blog.csdn.net/Sky_for_me/article/details/107585852
    更新时间:2022-08-07 10:39:58