• SpringBoot整合Swagger2


    1.概述

    1.1定义

    Swagger 是一个规范且完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。简单来说,它可以对API 自动生成在线文档,无需手动编写接口文档。另外其文档还支持在线测试,可直接对接口进行测试。

    1.2注解

    其主要依赖于注解,部分关键注解说明如下:

    注解名称 说明
    @Api 用在类上,说明该类的作用
    @ApiModel 用在类上,表示对类进行说明,用于实体类中的参数接收说明
    @ApiModelProperty 用于字段,表示对 model 属性的说明
    @ApiOperation 用在Controller 里的方法上,说明方法的作用,每一个接口的定义

    @ApiResponses、

    @ApiResponse

    @ApiResponse 用于方法上,说明接口响应的一些信息;@ApiResponses 组装了多个 @ApiResponse

    @ApiImplicitParam、

    @ApiImplicitParams

    @ApiImplicitParam用于方法上,为求参数进行说明;@ApiImplicitParams 组装了多个@ApiImplicitParam

    @ApiIgnore

    用于方法上,忽略某个接口文档

    @ApiImplicitParam的具体说明如下:

       
    name 参数名,对应方法中单独的参数名称
    value 参数中文说明
    required 是否必填。true必填,false非必填
    dataType 参数数据类型
    defaultValue 默认值
    paramType 参数类型,取值为 path、query、body、header、form

    2.实战演练

    2.1环境准备

    新建一个SpringBoot的项目,导入需要的依赖

            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
            </dependency>

    2.2接入Swagger2

    第一步:导入依赖

          <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger2</artifactId>
                <version>2.9.2</version>
            </dependency>
            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger-ui</artifactId>
                <version>2.9.2</version>
            </dependency>

    第二步:创建配置类。此配置类主要配置Swagger的相关信息,如api接口的所在包、文档说明等信息

    package com.example.demo;
    
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import springfox.documentation.builders.ApiInfoBuilder;
    import springfox.documentation.builders.PathSelectors;
    import springfox.documentation.builders.RequestHandlerSelectors;
    import springfox.documentation.service.Contact;
    import springfox.documentation.spi.DocumentationType;
    import springfox.documentation.spring.web.plugins.Docket;
    import springfox.documentation.swagger2.annotations.EnableSwagger2;
    
    @Configuration
    @EnableSwagger2//开启Swagger2
    public class SwaggerConfig {
        @Bean
        public Docket docket(){
            return new Docket(DocumentationType.SWAGGER_2).select()
                    //配置apis要扫描的controlelr的位置
                    .apis(RequestHandlerSelectors.basePackage("com.example.demo.controller"))
                    //配置路径
                    .paths(PathSelectors.any())
                    //构建文件的基本信息
                    .build().apiInfo(
                            new ApiInfoBuilder().description("微微一笑接口测试文档")
                                    .contact(new Contact("哈哈哈","https://github.com.lenve","1916008067@qq.com"))
                            .version("v1.1.0")
                            .title("API测试文档")
                            .build());
        }
    }

    第三步:创建用户实体

    package com.example.demo;
    
    import io.swagger.annotations.ApiModel;
    import io.swagger.annotations.ApiModelProperty;
    import lombok.Data;
    
    @Data
    @ApiModel(value = "用户实体")
    public class User {
    
        @ApiModelProperty(value = "id")
        private Integer id;
    
        @ApiModelProperty(value = "用户名")
        private  String username;
    
        @ApiModelProperty(value = "性别,0男,1女")
        private Integer sex;
    
    }

    第四步:创建开发接口,使用上述的注解

    package com.example.demo.controller;
    
    import com.example.demo.User;
    import io.swagger.annotations.*;
    import org.springframework.web.bind.annotation.*;
    import springfox.documentation.annotations.ApiIgnore;
    
    @RestController
    @Api(tags = "用户接口")//描述UserController的信息
    public class UserController {
     
        @ApiOperation(value = "查询用户",notes = "根据id查询用户")
        @ApiImplicitParam(paramType = "path",name="id",value = "用户id",required = true)
        @GetMapping("/user/query/{id}")
        public String getUserById(@PathVariable Integer id) {
            return "/user/"+id;
        }
    
        @ApiResponses({
                @ApiResponse(code=200,message="删除成功"),
                @ApiResponse(code=500,message="删除失败")})
        @ApiOperation(value = "删除用户",notes = "根据id删除用户")
        @DeleteMapping("/user/delete/{id}")
        public Integer deleteUserById(@PathVariable Integer id) {
            return id;
        }
    
        @ApiOperation(value = "添加用户",notes = "添加一个用户,传入用户名和性别")
        @ApiImplicitParams({
                @ApiImplicitParam(paramType = "query",name="username",value = "用户名",required = true,defaultValue = "张三"),
                @ApiImplicitParam(paramType = "query",name="sex",value = "性别",required = true,defaultValue = "")
        })
        @PostMapping("/user")
        public String addUser(@RequestParam String username,@RequestParam String sex){
            return username+","+sex;
        }
    
        @ApiOperation(value="修改用户",notes = "根据传入的用户信息修改用户")
        @PutMapping("/user")
        public String updateUser(@RequestBody User user){
            return user.toString();
        }
    
        @GetMapping("/ignore")
        @ApiIgnore
        public void ignoreMethod(){}
    
    
    }

    第四步:测试。启动项目,在浏览器输入http://localhost:8080/swagger-ui.html就可以看到接口的信息

    展开接口,就能看到所有的接口详细信息。以添加用户接口为例:

     

     点击 try it out 按钮,可以对其进行接口的测试。

    就是这么简单,你学废了吗?感觉有用的话,给笔者点个赞吧 !
  • 相关阅读:
    Python的命名空间及作用域
    STM32 RTC时钟的配置
    STM32 输入捕获配置
    stm32 看门狗配置
    led灯的驱动电流和电阻
    STM32中TIMx的映射及其通道
    STM32中断定时,控制LED灯
    STM32 用c语言控制4个LED灯从左向右无限流动
    SYSTEMsyssys.c:33:7: error: expected '(' before 'void' __ASM void MSR_MSP(u32 addr)
    STM32 PWM输出(映射)
  • 原文地址:https://www.cnblogs.com/zys2019/p/14967580.html
Copyright © 2020-2023  润新知