• swagger总结


    目录

    Swagger前言

    SpringBoot集成Swagger2

    导入依赖

    在controller中写一个controller工程

    配置swagger文件

    配置swagger

    Swagger配置扫描接口

    RequestHandlerSelectors的静态方法

    生产环境使用Swagger

    配置API文档的分组

    models

    注释用注解

    Swagger前言

    • 号称世界上最流行的api框架
    • RestFul Api文档在线自动生成工具=>Api文档与Api定义同步更新
    • 可以通过swagger注解给难理解的接口或属性增加注释信息
    • 直接运行,可以在线测试Api接口(try it out)
    • 支持多种语言:(Java、PHP……)

    官网:https://swagger.io/

    SpringBoot集成Swagger2

    注意:使用的springboot版本为2.5.1不然容易报空指针

    导入依赖

    1. <dependencies>
    2. <!--web项目-->
    3. <dependency>
    4. <groupId>org.springframework.boot</groupId>
    5. <artifactId>spring-boot-starter-web</artifactId>
    6. </dependency>
    7. <!--springboot测试类-->
    8. <dependency>
    9. <groupId>org.springframework.boot</groupId>
    10. <artifactId>spring-boot-starter-test</artifactId>
    11. <scope>test</scope>
    12. </dependency>
    13. <!--swagger2依赖-->
    14. <dependency>
    15. <groupId>io.springfox</groupId>
    16. <artifactId>springfox-swagger2</artifactId>
    17. <version>2.9.2</version>
    18. </dependency>
    19. <!--swagger的ui界面-->
    20. <dependency>
    21. <groupId>io.springfox</groupId>
    22. <artifactId>springfox-swagger-ui</artifactId>
    23. <version>2.9.2</version>
    24. </dependency>
    25. </dependencies>

    在controller中写一个controller工程

    1. @RestController
    2. public class HelloController {
    3. @RequestMapping("/hello")
    4. public String hello(){
    5. return "hello world";
    6. }
    7. }

    配置swagger文件

    1. @Configuration
    2. //开启swagger2注解
    3. @EnableSwagger2
    4. public class SwaggerConfig {
    5. }

    访问:http://localhost:8080/swagger-ui.html

    配置swagger

    注意:Swagger有一个bean的实例Docket

    1. @Configuration
    2. @EnableSwagger2
    3. public class SwaggerConfig {
    4. //配置docket的实例
    5. @Bean
    6. public Docket docket(){
    7. //作者信息
    8. Contact contact = new Contact("大神", "https://www.baidu.com", "12345@qq.com");
    9. return new Docket(DocumentationType.SWAGGER_2)
    10. .apiInfo(new ApiInfo(
    11. "大神的文档",//标题
    12. "简单的描述",//描述
    13. "1.0",//版本号
    14. "https://www.baidu.com",//team组织网址
    15. contact,
    16. "Apache 2.0",//lincense
    17. "http://www.apache.org/licenses/LICENSE-2.0",//lincenseUrl
    18. new ArrayList()));
    19. }
    20. }

    Swagger配置扫描接口

    1. //配置docket的实例
    2. @Bean
    3. public Docket docket(){
    4. return new Docket(DocumentationType.SWAGGER_2)
    5. .apiInfo(apiInfo())
    6. //配置是否启动swagger
    7. .enable(false)
    8. //下面三行同时使用,用于配置扫描接口
    9. .select()
    10. //配置要扫描接口的方式
    11. //扫描下面controller包下的接口
    12. .apis(RequestHandlerSelectors.basePackage("cn.tedu.swagger.controller"))
    13. //过滤其他路径,只扫描hell0后面的路径
    14. .paths(PathSelectors.ant("/hello/**"))
    15. .build();
    16. }

    RequestHandlerSelectors的静态方法

    • any():扫描全部
    • none():全不扫描
    • basePackage("cn.tedu.swagger.controller"):扫描该包下的接口
    • withMethodAnnotation(GetMapping.class):扫描方法上被该注解标识的接口

    生产环境使用Swagger

    1. #application.properties文件内
    2. #激活生产环境
    3. spring.profiles.active=dev
    1. #application-dev.properties文件内
    2. server.port=8081
    1. #application-pro.properties文件内
    2. server.port=8082
    1. @Bean
    2. public Docket docket(Environment environment){
    3. //设置要显示的swagger环境——里面传一个数组
    4. Profiles profiles = Profiles.of("dev","test");
    5. //若此环境属于上面的一种,那么返回true
    6. boolean b = environment.acceptsProfiles(profiles);
    7. return new Docket(DocumentationType.SWAGGER_2)
    8. .enable(b);
    9. }

    配置API文档的分组

    1. @Configuration
    2. @EnableSwagger2
    3. public class SwaggerConfig {
    4. //分组1
    5. @Bean
    6. public Docket docket(){
    7. return new Docket(DocumentationType.SWAGGER_2)
    8. .groupName("大神");
    9. }
    10. //分组2
    11. @Bean
    12. public Docket docket1(){
    13. return new Docket(DocumentationType.SWAGGER_2)
    14. .groupName("大牛");
    15. }
    16. }

    models

    1. @RestController
    2. public class HelloController {
    3. @GetMapping("/hello")
    4. public String hello(){
    5. return "hello world";
    6. }
    7. @PostMapping("hi")
    8. public User hi(){
    9. return new User();
    10. }
    11. }
    1. public class User {
    2. public String name;
    3. public Integer age;
    4. }

    注意:只要接口中返回了实体类,那么modles中就会有对应的实体类(实体类中的属性用public修饰ui中可见属性,其他修饰符不可见)

    注释用注解

    1. @RestController
    2. public class HelloController {
    3. //注释接口的注解
    4. @ApiOperation("hello接口")
    5. @GetMapping("/hello")
    6. public String hello(){
    7. return "hello world";
    8. }
    9. @ApiOperation("hi接口")
    10. @PostMapping("hi")
    11. public User hi(){
    12. return new User();
    13. }
    14. }
    1. //注释实体类的注解
    2. @ApiModel("user用户实体类")
    3. public class User {
    4. //注释实体类属性的注解
    5. @ApiModelProperty("用户名")
    6. public String name;
    7. @ApiModelProperty("用户密码")
    8. public Integer password;
    9. }

     

  • 相关阅读:
    【UI自动化】微信群聊未添加人数统计
    第十九章 Java绘图
    xlsx使用table_to_book报错Uncaught Unsupported origin when DIV is not a TABLE
    Hadoop 集群搭建
    PHP require、include、require_once 和 include_once 的区别
    文献阅读:Chain-of-Thought Prompting Elicits Reasoning in Large Language Models
    Spring框架的原理及应用详解(二)
    算法训练 第四周
    Dubbo学习(四)——Dubbo的常用场景
    2022年最新甘肃建筑八大员(材料员)模拟考试试题及答案
  • 原文地址:https://blog.csdn.net/m0_60027772/article/details/126753638