1、Swagger
(1)前后端分离
vue + SpringBoot
后端时代:前端只用管理静态页面;:html==>后端。模板引擎JSP=>后端是主力
2、Swagger的使用
(1)新建一个springboot项目
<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.9.2</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> </dependency>
(2)书写一个controller
@RestController public class SwaggerController { @RequestMapping("hello") public String test(){ return "hello"; } }
(3)集成swagger
@Configuration @EnableSwagger2 public class SwaggerConfig { }
(4)访问swagger-ui页面
(5)配置
@Configuration @EnableSwagger2 public class SwaggerConfig { @Bean public Docket docket() {//将默认的配置信息给覆盖掉 return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()); } private ApiInfo apiInfo() { //作者信息 Contact contact=new Contact("zhai","https://www.cnblogs.com/zhai1997/","3428834830@qq.com"); return new ApiInfo( "zhai的swagger", "怀梦想,致远方", "1.1.2", "https://www.cnblogs.com/zhai1997/", contact, "2.0", "https://www.cnblogs.com/zhai1997/", new ArrayList<>() ); } }
(6)测试
(6)配置扫描接口及开关
public class SwaggerConfig { @Bean public Docket docket() {//将默认的配置信息给覆盖掉 return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) //是否启用Swagger,如果为false则不能在浏览器中访问Swagger .enable(true) .select() //basePackage指定要扫描的包 //any:所有 .apis(RequestHandlerSelectors.basePackage("com.zhb.controller")) //过滤路径 //.paths(PathSelectors.ant("/com/**")) .build(); } private ApiInfo apiInfo() { //作者信息 Contact contact=new Contact("zhai","https://www.cnblogs.com/zhai1997/","3428834830@qq.com"); return new ApiInfo( "zhai的swagger", "怀梦想,致远方", "1.1.2", "https://www.cnblogs.com/zhai1997/", contact, "2.0", "https://www.cnblogs.com/zhai1997/", new ArrayList<>() ); } }
3、API文档的分组
(1)配置一个API分组
@Bean public Docket docket() {//将默认的配置信息给覆盖掉 return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .groupName("zhai") //是否启用Swagger,如果为false则不能在浏览器中访问Swagger .enable(true) .select() //basePackage指定要扫描的包 //any:所有 .apis(RequestHandlerSelectors.basePackage("com.zhb.controller")) //过滤路径 //.paths(PathSelectors.ant("/com/**")) .build(); }
测试结果:
(2) 多个分组,需要多个Docket实例
4、给实体类添加注释
(1)创建实体类并添加注释
@ApiModel("用户") public class User { @ApiModelProperty("用户名") public String username; @ApiModelProperty("密码") public String password; }
在controller中返回的是一个Student类型的数据:
@PostMapping("hello1") public User test1(){ return new User(); }
5、给controller的方法添加注释
@ApiOperation("hello的控制类") @GetMapping("hello2") public String hello(String username){ return username+"你好"; }
6、测试功能
(1)书写controller
@GetMapping("hello2") public String hello(String username){ return username+"你好"; }
点击tryit out:
输入数据进行测试:
测试结果:
(2)异常提示
故意制造异常:
@GetMapping("hello2") public String hello(String username){ int i=100/0; return username+"你好"; }
- 我们可以通过Swagger给一些比较难理解的属性或者接口,增加注释信息
- 接口文档实时更新
- 可以在线测试