学习目标

  • swagger的作用和概念
  • 了解前后端分离
  • springboot中集成swagger

    Swagger简介

    前后端分离产生的问题
    Vue+Springboot
    弊端:前端和后端对数据的需求无法及时沟通

    Swagger号称世界上最流行的api框架 restful api在线自动生成工具(api自动更新) 在线自动测试接口

springboot继承Swagger配置

导入依赖配置

  • swagger2
  • ui

配置swagger,这一步swagger已经可以运行了

  1. @Configuration
  2. @EnableSwagger2
  3. public class Swaggerconfig {
  4. }

配置完成,访问http://localhost:8081/swagger-ui.html
image.png
swagger详细配置,配置swagger的bean实例,Docket

  1. @Bean
  2. public Docket docket(){
  3. return new Docket(DocumentationType.SWAGGER_2)
  4. .apiInfo(apiInfo())//基本信息
  5. .enable(false)//设置是否开启swagger
  6. .groupName("zgd")//设置组名
  7. .select()//扫描接口
  8. .apis(RequestHandlerSelectors.basePackage("Main.Controller"))//配置扫描的方式
  9. .build();
  10. }

1:swagger配置信息

  1. private ApiInfo apiInfo(){
  2. Contact contact =new Contact("theunderkey", "1", "1");//作者信息
  3. return new ApiInfo(
  4. "LP",
  5. "the interface Api of LP",
  6. "1.0",
  7. "urn:tos",
  8. contact,
  9. "Apache 2.0",
  10. "http://www.apache.org/licenses/LICENSE-2.0",
  11. new ArrayList()
  12. );
  13. }
  14. //具体看源码
  15. public ApiInfo(String title, String description, String version, String termsOfServiceUrl, Contact contact, String license, String licenseUrl, Collection<VendorExtension> vendorExtensions) {
  16. this.title = title;
  17. this.description = description;
  18. this.version = version;
  19. this.termsOfServiceUrl = termsOfServiceUrl;
  20. this.contact = contact;
  21. this.license = license;
  22. this.licenseUrl = licenseUrl;
  23. this.vendorExtensions = Lists.newArrayList(vendorExtensions);
  24. }

2:配置扫描接口

  1. Docket中有select()方法,返回ApiSelectorBuilder类实例
  2. ApiSelectorBuilder类实例中有apisselector)方法用来设置扫描的方式,该方法返回本实例
  3. selectorRequestHandler接口的实现类,RequestHandlerSelectors(),我们可以查看此类中的扫描接口方式
  4. 一般使用basePackage()方法
  5. public ApiSelectorBuilder select() {
  6. return new ApiSelectorBuilder(this);
  7. }

3:设置组以及swagger是否启动

  1. swagger实例Docket中的方法
  2. 设置组名,多个组就是多个Docket实例
  3. public Docket groupName(String groupName) {
  4. this.groupName = (String)BuilderDefaults.defaultIfAbsent(groupName, this.groupName);
  5. return this;
  6. }
  7. 设置swagger是否开启,false则不开启,默认是开启的
  8. 通过环境让swagger是否开启,只用通过Environment接口的acceptsProfiles判断是什么环境即可
  9. boolean acceptsProfiles(String... var1);
  10. public Docket enable(boolean externallyConfiguredFlag) {
  11. this.enabled = externallyConfiguredFlag;
  12. return this;
  13. }

4:实体类信息配置

  1. 常用注解
  2. @ApiOperation("获取基本数据") //用来说明接口
  3. @ApiParam("") //用来说明接口接受的数据
  4. @ApiModel("日常数据类") //说明实体类
  5. @ApiModelProperty("日期id") //说明实体类的属性

Swagger的其他特性

测试接口
image.png
try it out 可以在线测接口

至此Swagger完结撒花,慰问一下自己,奥里给。