企业实习日志|Swagger技术


Swagger技术

  • Swagger的作用与概念
  • 在项目中使用swagger
  • 配置swagger
  • ApiInfo 配置
  • swagger配置扫描接口
  • 配置api文档分组
    • 多个分组
  • 实体类配置

Swagger的作用与概念 Swagger官网,点此进入
在前后端分离时代,我们需要实时自动更新接口信息,和测试接口,实现前后端分离式开发,swagger因此产生
在项目中使用swagger 以下以3.0.0依赖为例
io.springfox springfox-swagger2 3.0.0 io.springfox springfox-swagger-ui 3.0.0 io.springfox springfox-boot-starter 3.0.0

@RestController public class HelloController {@RequestMapping(value = "https://www.it610.com/hello") public String hello(){return "hello"; } }

@Configuration @EnableSwagger2 //开启swagger2 public class SwaggerConfig {}

【企业实习日志|Swagger技术】然后访问http://localhost:8080/swagger-ui/index.html
你就能看到如下界面,为swagger文档
企业实习日志|Swagger技术
文章图片

配置swagger 先来看看底层的代码,了解一下
企业实习日志|Swagger技术
文章图片

企业实习日志|Swagger技术
文章图片

ApiInfo 配置
@Configuration @EnableSwagger2 //开启swagger2 public class SwaggerConfig {@Bean public Docket docket(){return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()); }//配置swagger信息apiInfo private ApiInfo apiInfo(){//作者信息 Contact contact = new Contact("宋先慧", "https://blog.csdn.net/sxh06", "xianhuisong@yeah.net"); return new ApiInfo( "宋先慧的Api Documentation", "学习swagger没有尽头", "1.0", "urn:tos", contact, "Apache 2.0", "http://www.apache.org/licenses/LICENSE-2.0", new ArrayList()); }}

swagger配置扫描接口
@Configuration @EnableSwagger2 //开启swagger2 public class SwaggerConfig {//@Bean //public Docket docket1(){//return new Docket(DocumentationType.SWAGGER_2).groupName("分组二"); //} @Bean public Docket docket(Environment environment){Profiles profiles=Profiles.of("dev"); //获取项目的环境 boolean flag=environment.acceptsProfiles(profiles); return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .groupName("宋先慧")//分组 .enable(flag)//enable 配置是否启动swaggerflase则不能在浏览器访问 .select() //RequestHandlerSelectors实现类配置扫描方式 // basePackage指定要扫描的包 // any()全部 // none()都不扫描 //withClassAnnotation()扫描类上的注解参数是一个注解的反射对象 //withMethodAnnotation扫描方法上的注解 .apis(RequestHandlerSelectors.basePackage("com.sxh.swagger.controller")) //.apis(RequestHandlerSelectors.withMethodAnnotation(GetMapping.class)) //过滤什么路劲过滤请求 //.paths(PathSelectors.ant("/sxh/**")) .build(); }//配置swagger信息apiInfo private ApiInfo apiInfo(){//作者信息 Contact contact = new Contact("宋先慧", "https://blog.csdn.net/sxh06", "xianhuisong@yeah.net"); return new ApiInfo( "宋先慧的Api Documentation", "学习swagger没有尽头", "1.0", "urn:tos", contact, "Apache 2.0", "http://www.apache.org/licenses/LICENSE-2.0", new ArrayList()); }}

如果我只希望在生成环境使用swagger,在正式环境不使用swagger怎么解决?(enable=false|true)
配置api文档分组 企业实习日志|Swagger技术
文章图片

多个分组 配置多个Docket 实例即可
@Bean public Docket docket1(){return new Docket(DocumentationType.SWAGGER_2).groupName("分组一"); } @Bean public Docket docket2(){return new Docket(DocumentationType.SWAGGER_2).groupName("分组二"); }`

实体类配置 企业实习日志|Swagger技术
文章图片

企业实习日志|Swagger技术
文章图片

企业实习日志|Swagger技术
文章图片

企业实习日志|Swagger技术
文章图片

企业实习日志|Swagger技术
文章图片

    推荐阅读