Swagger2

Swagger2 整合 Springboot

地址:https://blog.csdn.net/simba1949/article/details/80919183

什么是swagger2

编写和维护接口文档是每个程序员的职责,根据 Swagger2 可以快速帮助我们编写最新的API接口文档,再也不用担心开会前仍忙于整理各种资料了,间接提升了团队开发的沟通效率。常用注解swagger通过注解表明该接口会生成文档,包括接口名、请求方法、参数、返回信息的等等。

Swagger2 配置类

代码

package top.simba1949.config;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.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;/*** Swagger2 配置类* @Configuration 让 Spring 容器加载该配置类* @EnableSwagger2 用于启动 swagger2* @author simba@onlying.cn* @date 2018/7/4 21:36*/
@Configuration
@EnableSwagger2
public class Swagger2 {/*** swagger2 启动后,通过createRestApi函数创建Docket的Bean,* apiInfo() 用来创建该Api的基本信息(这些基本信息会展现在文档页面中)。* select() 函数返回一个ApiSelectorBuilder实例用来控制哪些接口暴露给Swagger来展现,* 本例采用指定扫描的包路径来定义,Swagger会扫描该包下所有Controller定义的API,并产生文档内容(除了被@ApiIgnore指定的请求)。* @return*/@Beanpublic Docket createRestApi() {return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select().apis(RequestHandlerSelectors.basePackage("top.simba1949.controller")).paths(PathSelectors.any()).build();}private ApiInfo apiInfo() {return new ApiInfoBuilder().title("Spring Boot中使用Swagger2构建RESTful APIs").description("springboot学习笔记").termsOfServiceUrl("http://localhost:8080/").version("1.0").build();}}

效果

常用注解

  • @Api:修饰整个类,描述Controller的作用

  • @ApiOperation:描述一个类的一个方法,或者说一个接口

  • @ApiParam:单个参数描述

  • @ApiModel:用对象来接收参数

  • @ApiModelProperty:用对象接收参数时,描述对象的一个字段

  • @ApiIgnore:使用该注解忽略这个API,用于类或者方法上

  • @ApiImplicitParam:一个请求参数,用于方法上

  • @ApiImplicitParams:多个请求参数 ,包含多个 @ApiImplicitParam,用于方法上

    @Api:用在请求的类上,表示对类的说明tags="说明该类的作用,可以在UI界面上看到的注解,如果tags多个值,会生成多个list"value="该参数没什么意义,在UI界面上也看不到,所以不需要配置"@ApiOperation:用在请求的方法上,说明方法的用途、作用value="说明方法的用途、作用"notes="方法的备注说明"@ApiParam:单个参数描述- name:参数名- value:参数说明- required:是否必填@ApiModel:用对象来接收参数- value:表示对象名- description:对对象的描述
    @ApiModelProperty:用对象接收参数时,描述对象的一个字段- value:字段说明- name:重写属性名- dataType:重写属性类型- example:举例说明- hidden:隐藏@ApiIgnore:使用该注解忽略这个API,用于类或者方法上@ApiImplicitParams:用在请求的方法上,表示一组参数说明@ApiImplicitParam:用在@ApiImplicitParams注解中,指定一个请求参数的各个方面name:参数名value:参数的汉字说明、解释required:参数是否必须传paramType:参数放在哪个地方· header --> 请求参数的获取:@RequestHeader· query --> 请求参数的获取:@RequestParam· path(用于restful接口)--> 请求参数的获取:@PathVariable· body(不常用)· form(不常用)    dataType:参数类型,默认String,其它值dataType="Integer"       defaultValue:参数的默认值
    

@Api:

修饰整个类,描述Controller的作用

  • @Api

    • tags:对类的说明

代码

/*** @Api * value="不会再界面显示出来"* tags="说明该类的作用,可以在UI界面上看到的注解,如果tags多个值,会生成多个list"* @date 2018/7/4 20:17*/
@Api(tags = {"用户操作接口"})
@Controller
@RequestMapping("/user")
public class UserController {}

效果

@ApiOperation:

描述一个类的一个方法,或者说一个接口

  • @ApiOperation

    • value:用于方法描述
    • notes:用于提示内容

代码

@ApiOperation(value = "用于方法描述",notes = "用于提示内容")
@GetMapping("/{data}")
@ResponseBody
public ResponseCommon string(@PathVariable String data){return ResponseBuilder.buildSuccessResponse(data);
}

效果

@ApiParam:

用于单个参数描述

  • @ApiParam

    • name:参数名
    • value:参数说明
    • required:是否必填

代码

@ApiOperation(value = "用于方法描述",notes = "用于提示内容")
@GetMapping("/{data}")
@ResponseBody
public ResponseCommon string(@ApiParam(name = "data",value = "参数说明",required = true)@PathVariable String data){return ResponseBuilder.buildSuccessResponse(data);
}

效果

@ApiModel & @ApiModelProperty

@ApiModel:用对象来接收参数

@ApiModelProperty:用对象接收参数时,描述对象的一个字段

  • @ApiModel:用对象来接收参数

    • value:表示对象名
    • description:对对象的描述
  • @ApiModelProperty:用对象接收参数时,描述对象的一个字段
    • value:字段说明
    • name:重写属性名
    • dataType:重写属性类型
    • example:举例说明
    • hidden:隐藏

代码

package top.simba1949.common;import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;/*** @author simba@onlying.cn* @date 2018/7/4 20:18*/
@ApiModel(value = "用户的POJO",description = "对对象的描述")
public class UserCommon {@ApiModelProperty(value = "用户Id",name = "userId",dataType = "int",required = true,example = "1",hidden = true)private int userId;@ApiModelProperty(value = "用户名",name = "username",dataType = "String",required = true,example = "李白")private String username;@ApiModelProperty(value = "用户年龄",name = "age",dataType = "int",required = true,example = "888")private int age;@ApiModelProperty(value = "用户密码",name = "password",dataType = "String",required = true,example = "19491001")private String password;// getter/setter方法省略
}

效果

@ApiIgnore:

使用该注解忽略这个API,用于类或者方法上

@ApiImplicitParams & @ApiImplicitParam

@ApiImplicitParams :多个请求参数 ,用于方法上,包含多个 @ApiImplicitParam

@ApiImplicitParam:一个请求参数,用于方法上

  • @ApiImplicitParam

    • name:参数名
    • value:参数说明
    • dataType:参数类型,默认String,其他值dataType=“Integer”
    • paramType:参数发在哪个地方
      • header:请求参数的获取 @RequestHeader
      • query:请求参数的获取 @RequestParam
      • path:请求参数的获取 @PathVariable
      • body(不常用)
      • form (不常用)
    • required:是否必须填写
    • defaultValue:默认值

代码

@ApiOperation(value = "用于方法描述query",notes = "这是用来说明该方法,提示内容")
@ApiImplicitParams({@ApiImplicitParam(name = "data",value = "字符串数据",dataType = "String",paramType = "path",example = "白居易",required = true,defaultValue = "白居易"),@ApiImplicitParam(name = "i",value = "int类型",dataType = "int",paramType = "path",example = "666",required = true,defaultValue = "666")
})
@PostMapping("/query/{data}/{i}")
@ResponseBody
public ResponseCommon query(@PathVariable String data,@PathVariable int i){return ResponseBuilder.buildSuccessResponse(data + i);
}

效果

Swagger2学习笔记相关推荐

  1. SpringBoot学习笔记(16)----SpringBoot整合Swagger2

    Swagger 是一个规范和完整的框架,用于生成,描述,调用和可视化RESTful风格的web服务 http://swagger.io Springfox的前身是swagger-springmvc,是 ...

  2. MyBatis-Plus 学习笔记

    MyBatis-Plus 学习笔记 学习官网: https://mp.baomidou.com/guide/ 一.快速入门 1.简介 MyBatis的增强工具,在Mybatis的基础上只做增强功能,兼 ...

  3. Rabbitmq学习笔记(尚硅谷2021)

    Rabbitmq学习笔记 (尚硅谷) 1.MQ 的概念 1.1 什么是 MQ? 1.2 为什么要用 MQ? 削峰 解耦 异步 1.3 MQ 的分类 ActiveMQ Kafka RocketMQ Ra ...

  4. 尚硅谷谷粒学院学习笔记(防坑点的总结部分勘误)

    谷粒学院学习笔记 部分勘误 数据库设计规约 模块说明 环境搭建 创建一个Spring Boot 的父工程,版本使用:2.2.1.RELEASE 父工程pom.xml里面添加 在pom.xml中添加依赖 ...

  5. SpringBoot(学习笔记)

    SpringBoot学习笔记 从今天开始就进入微服务阶段 一些小问题 1.HelloWorld 1.1回顾什么是Spring 1.2什么是SpringBoot 1.3微服务架构 2.第一个Spring ...

  6. 尚医通项目学习笔记Part1

    尚医通项目学习笔记 前言 一.目前学习进度 二.学习记录 1.项目简介 1.1 项目所会用到的技术栈 1.2 业务流程 2.项目学习笔记 2.1MyBatis-Plus相关 2.2搭建项目框架 2.3 ...

  7. Docker 学习笔记 - 进阶四 Docker网络和 Docker compose

    Docker 学习笔记 - 进阶四 Docker网络和 Docker compose 4. docker 网络 4.1 docker network是什么 4.1.1 docker不启动,默认网络情况 ...

  8. SpringBoot 学习笔记

    SpringBoot 学习笔记 文章目录 SpringBoot 学习笔记 1. SpringBoot简介 1.1 什么是Spring 1.2 Spring 是如何简化Java开发的 1.3 什么是 S ...

  9. Rabbitmq学习笔记教程-尚硅谷

    Rabbitmq学习笔记 (尚硅谷) 尚硅谷 rabbitmq 教程 1.MQ 的概念 1.1 什么是 MQ? 存放消息的队列,互联网架构中常见的一种服务与服务之间通信的方式. 1.2 为什么要用 M ...

最新文章

  1. 从大规模文献库中实现生物医学关系抽取
  2. 如何查看已安装的CentOS版本信息
  3. struts2教程(10)
  4. 0820-拼多多二面
  5. datetime类型保存的时间比实际时间少8小时
  6. 详细对比9门主流编程语言
  7. 今日恐慌与贪婪指数为78 贪婪程度有所缓解
  8. mysql sql语句提升_mysql基本sql语句大全(提升用语篇)
  9. centos6.0安装mysql_CentOS 6.0 用非root安装MySQL
  10. css 的z-index研究
  11. Java算法面试题(009) 毒酒问题
  12. mysql5.7 64位下载_MySQL5.7下载-MySQL数据库5.7下载 v5.7.22.1官方版(32位/64位)--pc6下载站...
  13. 常用求导公式 高阶导公式 莱布尼兹公式
  14. ps学习之立体字设计
  15. IOS-Touch ID的简单使用
  16. 一个测试经理/测试主管/测试总监的工作总结
  17. 哪种耳机对耳朵听力伤害较小?不妨试试骨传导耳机
  18. VMware安装kali-linux-2023.1-installer-amd64.iso出现的部分问题,及解决办法
  19. 机器人涂装工程师岗位英文缩写_公司里各职位名称的英文缩写
  20. linux 星际争霸,让星际争霸在Linux操作系统下转起来

热门文章

  1. bvs是什么意思_股票b和s是什么意思,区别原来这么简单
  2. 我的面试经历(天津零氪科技)
  3. 小程序毕设作品之微信积分商城小程序毕业设计成品(1)开发概要
  4. html5点赞仿抖音,仿抖音之——点赞动画
  5. 红旗linux 输入法问题,红旗Linux牵手搜狗输入法 带给用户无拘无束输入体
  6. springboot整合netty实现tcp通信
  7. 探讨BFT的关键细节及Libra的Consensus组件
  8. 11_ue4天空球的使用
  9. 百度竞价推广是什么?信息流推广以及网盟推广是什么?
  10. 【“BattenSnakexjp4.1”数据结构课程设计报告】