4. 自定义接口展示
主要就是定义我们想要展示那些接口给前端人员进行测试使用.
基本的语句就是
Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select() //这里面定义我们的扫描规则 .build();
我们的扫描规则有两种
- 通过api接口进行配置
这种主要有下面几种方式
Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select() //配置接口扫描方式 //basePackage:指定要扫描的包 //.apis(RequestHandlerSelectors.basePackage("com.rang.swaggerdemo.controller")) //这里我们也可以通过splitor关键字来实现同时扫描多个包 //.apis(RequestHandlerSelectors.basePackage("com.rang.swaggerdemo.controller"+splitor+"com.rang.test.controller")) //扫描全部 //.apis(RequestHandlerSelectors.any()) //不扫描 //.apis(RequestHandlerSelectors.none()) //扫描类上的注解,参数是一个注解的反射对象 //.apis(RequestHandlerSelectors.withClassAnnotation(Configuration.class)) //扫描方法上的注解,参数是一个注解的反射对象 //.apis(RequestHandlerSelectors.withMethodAnnotation(GetMapping.class)) .build();
我们就来测试一下.apis(RequestHandlerSelectors.basePackage(“com.rang.swaggerdemo.controller”))
效果
这样便会显示com.rang.swaggerdemo.controller包下面所有的接口
- 通过path路径即url地址栏进行配置
这个主要就是通过url地址栏来进行
主要也是下面这几种方式:
Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select() //直接根据url地址栏进行匹配 //.paths(PathSelectors.ant("/user/**")) //将任何借口都匹配进来等同于上述apis的any方法 //.paths(PathSelectors.any()) //不匹配任何借口等同于上述apis的none方法 //.paths(PathSelectors.none()) //根据正则表达式进行匹配 //.paths(PathSelectors.regex("")) .build();
- 这里我们还是测试一下.paths(PathSelectors.ant("/user/**"))
效果:
但是大家其实可以看到我们上面是有 /user/test 与 /user/getname 这两个方法,按道理这两个方法都应该出现的,但是我自己测试过之后发现,无论怎么实现,他都是只能匹配出最开的那一个,之后的就匹配不出来了.有知
5. 常用的注解
这里主要就是下面这几个注解
@ApiModel
这个注解主要是标注在实体类上面
@ApiModel("用户实体类")//默认填充的是value字段 public class User { }
@ApiModelProperty
这个注解主要是标注在实体类的属性上面
@ApiModel("用户实体类") public class User { @ApiModelProperty("用户名")//默认填充的是value字段 private String username; @ApiModelProperty("密码") private String password; }
效果
@Api
这个注解主要是标注在controller上面
@RestController @Api(tags = "测试的controller")//默认填充的是value字段,所以我们需要加上tags字段的名称 public class HelloController { }
这里要注意因为默认填充的都是value字段,但是本身@Api注解有点不同的就是它显示的内容应该是tags字段,所以添加的时候需要加上该字段
效果
@ApiOperation
这个注解主要是标注在接口上面
@RestController @Api(tags = "测试的controller") public class HelloController { @ApiOperation("用户测试") @PostMapping(value = "/user/test") public User user(){ return new User(); } @ApiOperation("获取用户的用户名") @PostMapping(value = "/uesr/getname") public String getname( User user){ return user.getUsername(); } }
@ApiParam
这个注解主要是标注在接口需要传入的参数上面
@RestController @Api(tags = "测试的controller") public class HelloController { @PostMapping(value = "/hello") public String hello(@ApiParam("名字") String name){ return "hello"+name; } @ApiOperation("用户测试") @PostMapping(value = "/user/test") public User user(){ return new User(); } @ApiOperation("获取用户的用户名") @PostMapping(value = "/uesr/getname") public String getname( User user){ return user.getUsername(); } }
效果
6. 配置多个分组
当有多个开发人员的时候我们就能够通过配置多个分组来实现接口文档的整体一致性.
这里我们主要是通过注入多个Docket对象来实现
@Bean public Docket docket1(){ return new Docket(DocumentationType.SWAGGER_2) .groupName("小明"); } @Bean public Docket docket2(){ return new Docket(DocumentationType.SWAGGER_2) .groupName("小王"); } @Bean public Docket docket3(){ return new Docket(DocumentationType.SWAGGER_2) .groupName("小李"); }
效果
这样也能够方便我们能够快速的查找到相应开发人员开发的接口,同时也能够查看每个人的开发进度,防止组员摸鱼.
7. 在线测试
其实说实话,有了这个功能,postman工具你基本上也用不到了,可以网页直接测试,又何必再开一个单独的软件来进行呢?
这里的操作过程其实就和之前我们接触过的接口测试工具是一样的,操作也是十分的简单,也能支持比较多的参数格式,既能支持form表单数据测试,也能支持json数据的测试
效果