目录

一.简介

1.什么是swagger

2.swagger的特征

3.swagger依赖包

二.swagger常用注解

1.@Api

2.@ApiOperation

3.@ApiParam

4.@ApiImplicitParams、@ApiImplicitParam

5.@ApiResponses、@ApiResponse

6.@ApiModel、@ApiModelProperty

7.@PathVariable

三.注解使用注意点


一.简介

1.什么是swagger

Swagger是一个开放源代码软件框架,由大型工具生态系统支持,可帮助开发人员设计,构建,记录和使用RESTful Web服务。尽管大多数用户通过Swagger UI工具识别Swagger,但是Swagger工具集包括对自动文档,代码生成和测试用例生成的支持。

2.swagger的特征

1. 通过代码和注释自动生成文档。在Swagger框架下,开发人员可对服务进行归类说明,对方法,模型,返回结果等进行详细说明。方便开发人员在编写代码的同时,编写文档信息。自动生成,只需很少的编辑工作,就能获得完整的REST APIs文档

2. 提供了UI界面。既展示接口信息,又提供了参数校验,测试功能

3. 形成了文档规范,支持不同的语言

4. 提供丰富的组件。

3.swagger依赖包

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

二.swagger常用注解

1.@Api

@Api 注解用于标注一个Controller(Class)。在默认情况下,Swagger-Core只会扫描解析具有@Api注解的类,而会自动忽略其他类别资源(JAX-RS endpoints,Servlets等等)的注解。

属性 描述
value url的路径值
tags 如果设置这个值、value的值会被覆盖
description 对api资源的描述
basePath 基本路径可以不配置
position 如果配置多个Api 想改变显示的顺序位置
produces For example, "application/json, application/xml"
consumes For example, "application/json, application/xml"
protocols Possible values: http, https, ws, wss.
authorizations 高级特性认证时配置
hidden 配置为true 将在文档中隐藏

示例代码:

@Controller
@Slf4j
@RequestMapping("/user")
@Api(tags = "人员信息 API", description = "提供人员信息相关的 Rest API")
public class UserController extends BaseController {}

2.@ApiOperation

@ApiOperation 注解在用于对一个操作或HTTP方法进行描述。具有相同路径的不同操作会被归组为同一个操作对象。不同的HTTP请求方法及路径组合构成一个唯一操作。

主要属性:

属性 描述
value url的路径值
tags 如果设置这个值、value的值会被覆盖
description 对api资源的描述
basePath 基本路径可以不配置
position 如果配置多个Api 想改变显示的顺序位置
produces For example, "application/json, application/xml"
consumes For example, "application/json, application/xml"
protocols Possible values: http, https, ws, wss.
authorizations 高级特性认证时配置
hidden 配置为true 将在文档中隐藏
response 返回的对象
responseContainer 这些对象是有效的 "List", "Set" or "Map".,其他无效
httpMethod "GET", "HEAD", "POST", "PUT", "DELETE", "OPTIONS" and "PATCH"
code http的状态码 默认 200
extensions 扩展属性

3.@ApiParam

@ApiParam作用于请求方法上,定义api参数的注解。

主要属性:

属性 描述
name 属性名称
value 属性值
defaultValue 默认属性值
allowableValues 可以不配置
required 是否属性必填
access 不过多描述
allowMultiple 默认为false
hidden 隐藏该属性
example 举例子

代码示例:

public ResponseEntity<User> getUserById(@ApiParam(value = "ID of user that needs to be fetched", allowableValues = "range[1,10]", required = true)@PathVariable("UserId") Long userId)

4.@ApiImplicitParams、@ApiImplicitParam

@ApiImplicitParams、@ApiImplicitParam 都可以定义参数.

(1).@ApiImplicitParams:用在请求的方法上,包含一组参数说明

(2).@ApiImplicitParam:对单个参数的说明

主要属性:

属性 描述
name 参数名
value 参数的说明、描述
required 参数是否必须必填
paramType 参数放在哪个地方
query --> 请求参数的获取:@RequestParam
header --> 请求参数的获取:@RequestHeader
path(用于restful接口)--> 请求参数的获取:@PathVariable
body(请求体)--> @RequestBody User user
form(普通表单提交)
dataType 参数类型,默认String,其它值dataType="Integer"
defaultValue 参数的默认值

代码示例:

提示:根据dataTtype属性的描述我们的"手机号","密码"都是"String"类型所以我们将其省略

/*** <pre>*  登录API接口* </pre>** @since 2022-06-10*/
@ApiImplicitParams({//参数效验@ApiImplicitParam(name="phonenum",value="手机号",required=true,paramType="form"),@ApiImplicitParam(name="password",value="密码",required=true,paramType="form"),@ApiImplicitParam(name="age",value="年龄",required=true,paramType="form",dataType="Integer")})@PostMapping("/login")public ApiResult login(@RequestParam String mobile, @RequestParam String password,@RequestParam Integer age){//...return JsonResult.ok(map);}

5.@ApiResponses、@ApiResponse

@ApiResponses、@ApiResponse进行方法返回对象的说明。

主要属性:

属性 描述
code 数字,例如400
message 信息,例如"请求参数没填好"
response 抛出异常的类

代码示例:

@ApiResponses({@ApiResponse(code = 200, message = "请求成功"),@ApiResponse(code = 400, message = "请求参数没填好"),@ApiResponse(code = 404, message = "请求路径没有或页面跳转路径不对")}) @ResponseBody@RequestMapping("/user")public ApiResult getUser(@RequestParam String userId) {...}

6.@ApiModel、@ApiModelProperty

@ApiModel用于描述一个Model的信息(这种一般用在post创建的时候,使用@RequestBody这样的场景,请求参数无法使用@ApiImplicitParam注解进行描述的时候)。

@ApiModelProperty用来描述一个Model的属性

使用场景

@ApiModel 用在模型类上,对模型类作注解

@ApiModelProperty 用在属性上,对属性作注解

代码演示:

/*** <pre>*     人员信息类* </pre>**/
@Data
@ApiModel(description= "返回人员信息")
public class UserQueryVo extends BaseEntity{@ApiModelProperty(value = "主键", required = true)@TableId(value = "id", type = IdType.ID_WORKER)private Long id;@ApiModelProperty(value = "手机号", required = true)private String phonenum;@ApiModelProperty(value = "密码", required = true)private String password;@ApiModelProperty(value = "年龄", required = true)private Integer age;
}

7.@PathVariable

@PathVariable用于获取get请求url路径上的参数,即参数绑定的作用,通俗的说是url中"?"前面绑定的参数。

代码示例:

复制代码
 /*** 人员信息*/@GetMapping("/info/{id}")@RequiresPermissions("tour:vehicle:info:info")@ApiOperation(value = "获取user对象详情", notes = "查看人员信息")public ApiResult<UserQueryVo> getTourVehicleInfo(@PathVariable("id") Long id) throws Exception {UserQueryVo userQueryVo= userService.getTourVehicleInfoById(id);return ApiResult.ok(userQueryVo);}

三.注解使用注意点

1.为了在swagger-ui上看到输出,至少需要两个注解:@Api和@ApiOperation
   2.即使只有一个@ApiResponse,也需要使用@ApiResponses包住使用
   3.对于@ApiImplicitParam的paramType: query,from域中的值需要使用@RequerstParam获取,       header域中的只需要使用@RequestHeader来获取,path域中的值需要使用@PathVariable来获       取,body域中的值使用@RequestBody来获取,否则可能出错;而且如果paramType是body,name不     能是body,否则有问题,与官方文档中的"if paramType is "body",the name should be "body" "不符

swagger常用注解相关推荐

  1. Spring Boot 1.5.8集成Swagger2 + YApi —— Swagger常用注解说明

    前言 受新型冠状病毒的影响,在家像猪一样不是睡就是吃,闲着就学着用下Swagger和YApi,特将这几天的学习成果写成了这系列的文章,希望能对大家有所帮助.武汉加油,中国加油! Spring Boot ...

  2. springmvc整合swagger 与 常用注解说明

    Swagger 是一款RESTFUL接口的文档在线自动生成+功能测试功能软件. Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务.总体目标是使 ...

  3. swagger注解说明_swagger2常用注解说明

    原文:https://blog.csdn.net/u014231523/article/details/76522486 说明: 1.这里使用的版本:springfox-swagger2(2.4)sp ...

  4. Swagger 学习笔记 | Swagger 简介 | Springfox 简介 | Springfox 2.9.2 常用注解 | Spring Boot 整合 Swagger2 案例

    文章目录 一.Swagger 简介 二.Springfox 简介 三.Springfox2.9.2 常用注解 四.SpringBoot 整合 Swagger2 4.1 引入Maven依赖 4.2 项目 ...

  5. SpringBoot+Swagger2常用注解

    场景 SpringBoot+Swagger2实现可视化API文档流程: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/936166 ...

  6. postmapping注解_Swagger常用注解

    在使用swagger时候如果掌握一些注解的使用,则在开发过程中测试的时候可以事半功倍,尤其在与前端技术进行联调,前端技术在访问swagger中的每个api时,可以很清楚的知道每个url对应的请求类型. ...

  7. Swagger2常用注解说明

    文章目录 Swagger2简介 使用Swagger解决的问题 Spring Boot集成Swagger2 添加依赖 添加Swagger2Config配置类 编写接口 用户DTO 用户controlle ...

  8. 常用注解,依赖,常用类,插件和其它(自用)

    目录 参考 下面是自己写的笔记 java注解大全参考: 实用的注解: @Controller 和 @RestController @RequestMapper @PathVariable 和 @Req ...

  9. springboot 集成 Swagger2 配置以及常用注解的说明和使用 ( 超详细)

    一.注解的使用 和 说明 结构化说明如下: @Api:用在请求的类上,表示对类的说明      tags="说明该类的作用,可以在UI界面上看到的注解"    (也就是给类取别名) ...

  10. Java常用注解以及使用场景示例

    Java注解定义 Java注解是Java编程语言中的一种特殊形式的元数据,它们可以用于为程序的各个元素(例如类.方法.字段等)添加额外的信息和属性.注解是在Java 5中引入的,通过在代码中使用注解, ...

最新文章

  1. Spring Security 实战:Spring Boot 下的自动配置
  2. android bitmap转图片_Android 这些 Drawable 你都会用吗?
  3. Python3.x:pip命令安装第三方库,超时处理方案
  4. 华为手机云闪付付款码如何截图_云闪付乘车码,它带着优惠又来了
  5. IPC--进程间通信六(消息队列)
  6. realme X7 Pro至尊版确认:最便宜的曲面屏手机
  7. yum install / yum localinstall
  8. <c++STL>: map的常见用法
  9. oracle迁移数据到mysql
  10. WEB安全——文件上传
  11. 台式计算机主板,台式电脑主板开机过程详解
  12. vb.net设置分辨率和缩放比例_配置高不一定性能强,Win 10做好这些设置才能“6到飞起”!...
  13. Android 运行程序报错:Unable to execute dex: Multiple dex files define Lcom/baidu/android/pushservice/Push
  14. 姚劲波年会演讲:给老员工发8万元股票,6年内冲刺千亿目标
  15. 支付宝支付demo运行流程
  16. 修改ntoskrnl.exe的方法
  17. JAVA SSM框架黄淮学院食堂仓库管理系统的设计与实现源码
  18. Arduino模拟电脑键盘(基于AVR-USB的USB-HID设备)
  19. 分布式文件系统之冗余设计(电脑坏了怎么办)
  20. 微信小程序上传组件(可同时长传图片+视频)

热门文章

  1. 平时常见的视频文件格式有哪些呢?
  2. 各种版本的python安装pyHook----解决找不到源的问题
  3. deepin linux隐藏磁盘,Deepin 20下开机不自动挂载(隐藏)NTFS分区(Windows分区)的方法...
  4. shell 数组及 十六进制转换报错
  5. 宝塔实测-电商ERP进销存系统源码
  6. 微信H5开发及技巧思维导图
  7. myeclipse导入项目的问题,无法next
  8. 数据同步工具--Canal
  9. 【NeurIPS 2019】Yoshua Bengio报告:深度学习系统从1代到2代中的基础知识
  10. 计算机组装模拟系统吗,怎么在线模拟组装电脑