Rest API描述 | swagger
2021/6/27 23:26:14
本文主要是介绍Rest API描述 | swagger,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
文章目录
- 1. 背景介绍
- 2. Swagger2注解说明
- 2.1 @Api:用在请求的类上,说明该类的作用
- 2.2 @ApiOperation:用在请求的方法上,说明方法的作用
- 2.3 @ApiImplicitParams:用在请求的方法上,包含一组参数说明
- 2.4 @ApiResponses:用在请求的方法上,表示一组响应
- 2.5 @ApiModel:用于响应类上,表示一个返回响应数据的信息
- 3. Spring Boot中使用swagger
- 3.1 添加swagger依赖
- 3.2 swagger配置文件
- 4. reference
1. 背景介绍
2. Swagger2注解说明
2.1 @Api:用在请求的类上,说明该类的作用
@Api:用在请求的类上,表示对类的说明 tags="说明该类的作用,可以在UI界面上看到的注解" value="该参数没什么意义,在UI界面上也看到,所以不需要配置"
示例:
@Api(tags="APP用户注册Controller")
2.2 @ApiOperation:用在请求的方法上,说明方法的作用
@ApiOperation:用在请求的方法上,说明方法的用途、作用 value="说明方法的用途、作用" notes="方法的备注说明" // 在notes中进行换行的方法: 1、springfox-swagger2 中使用:空格+空格+\n 2、swagger-springmvc 中使用:<br/> 如: @ApiOperation(value = "this api",notes = "参数name有三个选择: \n 1... \n2... \n3...") 其他参数: tags 操作标签,非空时将覆盖value的值 response 响应类型(即返回对象) responseContainer 声明包装的响应容器(返回对象类型)。有效值为 "List", "Set" or "Map"。 responseReference 指定对响应类型的引用。将覆盖任何指定的response()类 httpMethod 指定HTTP方法,"GET", "HEAD", "POST", "PUT", "DELETE", "OPTIONS" and "PATCH" position 如果配置多个Api 想改变显示的顺序位置,在1.5版本后不再支持 nickname 第三方工具唯一标识,默认为空 produces 设置MIME类型列表(output),例:"application/json, application/xml",默认为空 consumes 设置MIME类型列表(input),例:"application/json, application/xml",默认为空 protocols 设置特定协议,例:http, https, ws, wss。 authorizations 获取授权列表(安全声明),如果未设置,则返回一个空的授权值。 hidden 默认为false, 配置为true 将在文档中隐藏 responseHeaders 响应头列表 code 响应的HTTP状态代码。默认 200 extensions 扩展属性列表数组
示例:
@ApiOperation(value="用户注册",notes="手机号、密码都是必输项,年龄随边填,但必须是数字")
2.3 @ApiImplicitParams:用在请求的方法上,包含一组参数说明
``` @ApiImplicitParams:用在请求的方法上,表示一组参数说明 @ApiImplicitParam:用在@ApiImplicitParams注解中,指定一个请求参数的各个方面 name:参数名 value:参数的汉字说明、解释 required:参数是否必须传 paramType:参数放在哪个地方 · header --> 请求参数的获取:@RequestHeader · query --> 请求参数的获取:@RequestParam · path(用于restful接口)--> 请求参数的获取:@PathVariable · body(不常用) · form(不常用) dataType:参数类型,默认String // 注意:如果dataType设置为Integer,在文档中会显示undefined,如果设置为Int,就可以显示Integer // 如果输入的为数组类型,则在dataType中设置数组中元素类型,如:String,然后设置allowMultiple=true即可,此时文档中dataType列下显示的类型为Array[string] defaultValue:参数的默认值 example: 非请求体(body)参数的单个请求示例,注意是非body类型的参数,body类型设置无效 examples:设置body参数请求的示例 // examples=@Example((@ExampleProperty(mediaType="",value=""))) allowableValues:设置参数允许的值,例如:allowableValues="a, b, c" ``` 示例: ``` @ApiImplicitParams({ @ApiImplicitParam(name="mobile",value="手机号",required=true,paramType="form"), @ApiImplicitParam(name="password",value="密码",required=true,paramType="form"), @ApiImplicitParam(name="age",value="年龄",required=true,paramType="form",dataType="Integer") }) ```
2.4 @ApiResponses:用在请求的方法上,表示一组响应
@ApiResponses:用在请求的方法上,表示一组响应 @ApiResponse:用在@ApiResponses中,一般用于表达一个错误的响应信息 code:数字,例如400 message:信息,例如"请求参数没填好" response:抛出异常的类
示例
@ApiOperation(value = "select1请求",notes = "多个参数,多种的查询参数类型") @ApiResponses({ @ApiResponse(code=400,message="请求参数没填好"), @ApiResponse(code=404,message="请求路径没有或页面跳转路径不对") })
2.5 @ApiModel:用于响应类上,表示一个返回响应数据的信息
@ApiModel:用于响应类上,表示一个返回响应数据的信息 (这种一般用在post创建的时候,使用@RequestBody这样的场景, 请求参数无法使用@ApiImplicitParam注解进行描述的时候) @ApiModelProperty:用在属性上,描述响应类的属性
示例:
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.io.Serializable; @ApiModel(description= "返回响应数据") public class RestMessage implements Serializable{ @ApiModelProperty(value = "是否成功") private boolean success=true; @ApiModelProperty(value = "返回对象") private Object data; @ApiModelProperty(value = "错误编号") private Integer errCode; @ApiModelProperty(value = "错误信息") private String message; /* getter/setter */ }
注意:
-
举例说明:如果使用 @ApiImplicitParam(name = “department”, value = “部门信息”, dataType =“Department”, paramType = “body”, required = true)在API的参数注解中,那么在Department的实体中就不要使用@ApiModel(value = “Department对象”, description = “”),否则在文档中对应的API参数部分就不能显示Department的实体类。也就是上变说的@ApiModel请求参数无法使用@ApiImplicitParam注解进行描述的时候)
-
我们虽然在model层的实体类上添加了相应的注解,但是并没有显示,出现这个问题的原因是因为虽然在实体类上进行了注解,但是必须在controller层中使用@requestBody注解或者返回的数据类型中包含注解的实体类才可以显示,由于我写的API中没有满足这样的条件,所以没有显示。
3. Spring Boot中使用swagger
3.1 添加swagger依赖
- swagger不同的版本界面效果不同。目前使用2.9.2版本,使用3.0.0版本则出现问题
3.2 swagger配置文件
新建config/SwaggerConfig.java
package com.example.demo.config; import org.springframework.beans.factory.annotation.Value; 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; @Configuration @EnableSwagger2 public class SwaggerConfig { @Value("${swagger.config.basePackage}") private String basePackage; @Value("${swagger.config.title}") private String title; @Value("${swagger.config.description}") private String description; @Value("${swagger.config.version}") private String version; @Bean public Docket createRestApi(){ return new Docket(DocumentationType.SWAGGER_2) // 指定API类型为swagger2 .apiInfo(apiInfo()) // 用于定义API文档的相关信息 .select() .apis(RequestHandlerSelectors.basePackage(basePackage)) // 指定controller层包名 .paths(PathSelectors.any()) // 应用于所有的controller .build(); } private ApiInfo apiInfo(){ return new ApiInfoBuilder() .title(title) // API文档的标题 .description(description) // 关于这个文档作用的描述 .version(version) // 设置当前API文档的版本号 .build(); } }
在application.yml中添加相关参数的配置
swagger: config: basePackage: com.example.demo.controller title: 设备管理API接口文档 description: 提供设备管理相关接口描述 version: 1.0
4. reference
- Springboot中集成Swagger2.0
- SpringBoot项目中Swagger的配置和使用
这篇关于Rest API描述 | swagger的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-07如何利用看板工具优化品牌内容创作与审批,确保按时发布?
- 2025-01-07百万架构师第十一课:源码分析:Spring 源码分析:Spring源码分析前篇|JavaGuide
- 2025-01-07质量检测标准严苛,这 6 款办公软件达标了吗?
- 2025-01-07提升品牌活动管理的效率:看板工具助力品牌活动日历的可视化管理
- 2025-01-07宠物商场的精准营销秘籍:揭秘看板软件的力量
- 2025-01-07“30了,资深骑手” | 程序员能有什么好出路?
- 2025-01-07宠物公园的营销秘籍:看板软件如何帮你精准触达目标客户?
- 2025-01-07从任务分解到资源优化:甘特图工具全解析
- 2025-01-07企业升级必备指南:从传统办公软件到SaaS工具的转型攻略
- 2025-01-07一文告诉你IT项目管理如何做到高效