• SpringBoot集成Swagger的使用


    Swagger是一个规范和完整的框架,用于生成、描述、调用和可视化RESTful风格的Web服务。目标是使客户端和文件系统作为服务器以同样的速度来更新文件的方法,参数和模型紧密集成到服务器。

    Swagger能够在线自动生成 RESTFul接口的文档,同时具备测试接口的功能。

    简单点来讲就是说,swagger是一款可以根据RESTFul风格生成的生成的接口开发文档,并且支持做测试的一款中间软件。不是RESTFul风格也能生成文档。

    一、添加依赖

    1. <dependency>
    2. <groupId>io.springfoxgroupId>
    3. <artifactId>springfox-swagger2artifactId>
    4. <version>2.8.0version>
    5. dependency>
    6. <dependency>
    7. <groupId>io.springfoxgroupId>
    8. <artifactId>springfox-swagger-uiartifactId>
    9. <version>2.8.0version>
    10. dependency>

    二、启动类加上@EnableSwagger2注解

    1. package com.example.fastjsondemo;
    2. import org.springframework.boot.SpringApplication;
    3. import org.springframework.boot.autoconfigure.SpringBootApplication;
    4. import springfox.documentation.swagger2.annotations.EnableSwagger2;
    5. @EnableSwagger2
    6. @SpringBootApplication
    7. public class FastJsonDemoApplication {
    8. public static void main(String[] args) {
    9. SpringApplication.run(FastJsonDemoApplication.class, args);
    10. }
    11. }

    三、application.properties文件配置

    1. #路径匹配规则
    2. spring.mvc.pathmatch.matching-strategy=ant_path_matcher

    四、创建控制层

    1. package com.example.fastjsondemo.controller;
    2. import org.springframework.web.bind.annotation.GetMapping;
    3. import org.springframework.web.bind.annotation.RestController;
    4. /**
    5. * @author qx
    6. * @date 2023/8/29
    7. * @des 测试控制层
    8. */
    9. @RestController
    10. public class IndexController {
    11. @GetMapping("/index")
    12. public String hello(String name, Integer age) {
    13. return "name=" + name + ",age=" + age;
    14. }
    15. }

    四、测试

    我们启动项目,然后浏览器访问:http://localhost:8080/swagger-ui.html

    我们可以直接进行接口的测试

     五、Swagger配置

    1.自定义设置文档头

    1. package com.example.fastjsondemo.config;
    2. import org.springframework.context.annotation.Bean;
    3. import org.springframework.context.annotation.Configuration;
    4. import springfox.documentation.builders.ApiInfoBuilder;
    5. import springfox.documentation.service.ApiInfo;
    6. import springfox.documentation.service.Contact;
    7. import springfox.documentation.spi.DocumentationType;
    8. import springfox.documentation.spring.web.plugins.Docket;
    9. /**
    10. * @author qx
    11. * @date 2023/8/29
    12. * @des Swagger文档头部设置
    13. */
    14. @Configuration
    15. public class SwaggerConfig {
    16. @Bean
    17. public Docket docket(){
    18. Docket docket = new Docket(DocumentationType.SWAGGER_2);
    19. ApiInfo apiInfo = new ApiInfoBuilder()
    20. // 标题
    21. .title("我是标题")
    22. // 版本
    23. .version("1.0")
    24. // 描述
    25. .description("项目描述")
    26. // 联系人
    27. .contact(new Contact("qx","http://xxx.com","xx@qq.com"))
    28. .build();
    29. return docket.apiInfo(apiInfo);
    30. }
    31. }

    我们重新启动项目,然后访问Swagger地址。

     六、Swagger相关注解的认识

    @Api:用在类上,说明该类的作用。

    1. package com.example.fastjsondemo.controller;
    2. import io.swagger.annotations.Api;
    3. import org.springframework.web.bind.annotation.GetMapping;
    4. import org.springframework.web.bind.annotation.RestController;
    5. /**
    6. * @author qx
    7. * @date 2023/8/29
    8. * @des 测试控制层
    9. */
    10. @Api(tags = {"测试接口"})
    11. @RestController
    12. public class IndexController {
    13. @GetMapping("/index")
    14. public String hello(String name, Integer age) {
    15. return "name=" + name + ",age=" + age;
    16. }
    17. }

     @ApiModel:用在类上,表示对类进行说明,用于实体类中的参数接收说明。

    @ApiModelProperty:用于字段、表示对属性的说明

    1. package com.example.fastjsondemo.model;
    2. import io.swagger.annotations.ApiModel;
    3. import io.swagger.annotations.ApiModelProperty;
    4. import lombok.Data;
    5. /**
    6. * @author qx
    7. * @date 2023/8/29
    8. * @des 测试的实体类
    9. */
    10. @ApiModel(value = "IndexController", description = "地图实体")
    11. @Data
    12. public class Map {
    13. private String status;
    14. private String info;
    15. private String infocode;
    16. @ApiModelProperty(value = "省份")
    17. private String province;
    18. @ApiModelProperty(value = "城市")
    19. private String city;
    20. @ApiModelProperty(value = "地区码")
    21. private String adcode;
    22. @ApiModelProperty(value = "经纬度")
    23. private String rectangle;
    24. }
    1. package com.example.fastjsondemo.controller;
    2. import com.example.fastjsondemo.model.Map;
    3. import io.swagger.annotations.Api;
    4. import io.swagger.annotations.ApiModel;
    5. import org.springframework.web.bind.annotation.GetMapping;
    6. import org.springframework.web.bind.annotation.RestController;
    7. /**
    8. * @author qx
    9. * @date 2023/8/29
    10. * @des 测试控制层
    11. */
    12. @RestController
    13. public class IndexController {
    14. @GetMapping("/index")
    15. public String hello(Map map) {
    16. return "hello";
    17. }
    18. }

     @ApiOperation:用于对方法的说明。

    1. package com.example.fastjsondemo.controller;
    2. import com.example.fastjsondemo.model.Map;
    3. import io.swagger.annotations.Api;
    4. import io.swagger.annotations.ApiModel;
    5. import io.swagger.annotations.ApiOperation;
    6. import org.springframework.web.bind.annotation.GetMapping;
    7. import org.springframework.web.bind.annotation.RestController;
    8. /**
    9. * @author qx
    10. * @date 2023/8/29
    11. * @des 测试控制层
    12. */
    13. @RestController
    14. public class IndexController {
    15. @ApiOperation(value = "测试", notes = "测试描述")
    16. @GetMapping("/index")
    17. public String hello(Map map) {
    18. return "hello";
    19. }
    20. }

    @ApiImplicitParams和@ApiImplicitParam:用于对方法中的参数进行说明

    • name:参数名,对应方法中单独的参数名称。

    • value:参数中文说明。

    • required:是否必填。

    • paramType:参数类型,取值为 path、query、body、header、form。

    • dataType:参数数据类型。

    • defaultValue:默认值。

    1. package com.example.fastjsondemo.controller;
    2. import com.example.fastjsondemo.model.Map;
    3. import io.swagger.annotations.*;
    4. import org.springframework.web.bind.annotation.GetMapping;
    5. import org.springframework.web.bind.annotation.RestController;
    6. /**
    7. * @author qx
    8. * @date 2023/8/29
    9. * @des 测试控制层
    10. */
    11. @RestController
    12. public class IndexController {
    13. @ApiOperation(value = "测试", notes = "测试描述")
    14. @ApiImplicitParams({
    15. @ApiImplicitParam(name = "name", value = "用户姓名", dataType = "string", paramType = "query", required = true, defaultValue = ""),
    16. @ApiImplicitParam(name = "age", value = "用户年龄", dataType = "int", paramType = "query", required = true, defaultValue = "1")
    17. })
    18. @GetMapping("/index")
    19. public String hello(String name, Integer age) {
    20. return "name=" + name + ",age=" + age;
    21. }
    22. }

  • 相关阅读:
    华卓荣登「2024数商典型应用场景“乘数榜”」
    基于SSM技术的oa办公管理系统的设计与实现毕业设计源码100934
    JS(JavaScript)
    C#在Excel与Word中写入上角标与下角标
    无法启动此程序,因为计算机中丢失MSVCR71.dll的详细解决修复方法
    如何用 JMeter 编写性能测试脚本?
    硬盘模式vmd怎么改ahci_电脑vmd改ahci模式详细步骤
    关键词生成原创文章软件-原创文章生成软件
    linux redis自启动
    Codeforces Round #909 (Div. 3)
  • 原文地址:https://blog.csdn.net/qinxun2008081/article/details/132562270