SpringBoot集成Swagger2,以及Swagger2常用API

简介: SpringBoot集成Swagger2,以及Swagger2常用API

为什么选择Swagger2

  1. 接口文档在线自动生成
  2. 接口在线调试功能
  3. 文档与代码可以保持同步(因为文档的方法,参数和模型紧密集成到服务端的代码)


maven依赖

<properties>
<!-- swagger.version -->
<swagger.version>2.2.2</swagger.version>
</properties>
<!--swagger2【API文档】-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>${swagge
r.version}</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>${swagger.version}</version>
</dependency>


Swagger2配置

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;
/**
* @version V1.0
* @Title: Swagger配置类
* @ClassName: com.newcapec.config.swagger.Swagger2Configuration.java
* @Description:
* @Copyright 2016-2017 - Powered By 研发中心
* @author: 王延飞
* @date:2017-12-11 8:20
*/
@Configuration
@EnableSwagger2
public class Swagger2Configuration {
@Bean
public Docket buildDocket() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(buildApiInfo())
.select()
//要扫描的API(Controller)基础包
.apis(RequestHandlerSelectors.basePackage("com.newcapec.controller"))
.paths(PathSelectors.any())
.build();
}
/**
* @Title: 构建API基本信息
* @methodName: buildApiInfo
* @param
* @return springfox.documentation.service.ApiInfo
* @Description
*
* @author: 王延飞
* @date: 2017-12-11 8:44
*/
private ApiInfo buildApiInfo() {
return new ApiInfoBuilder()
.title("业务系统<>API文档")
.description("这里除了查看接口功能外,还提供了调试测试功能")
.contact("王延飞")
.version("1.0")
.build();
}
}


Swagger2使用

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;
/**
* @version V1.0
* @Title: Swagger配置类
* @ClassName: com.newcapec.config.swagger.Swagger2Configuration.java
* @Description:
* @Copyright 2016-2017 - Powered By 研发中心
* @author: 王延飞
* @date:2017-12-11 8:20
*/
@Configuration
@EnableSwagger2
public class Swagger2Configuration {
@Bean
public Docket buildDocket() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(buildApiInfo())
.select()
//要扫描的API(Controller)基础包
.apis(RequestHandlerSelectors.basePackage("com.newcapec.controller"))
.paths(PathSelectors.any())
.build();
}
/**
* @Title: 构建API基本信息
* @methodName: buildApiInfo
* @param
* @return springfox.documentation.service.ApiInfo
* @Description
*
* @author: 王延飞
* @date: 2017-12-11 8:44
*/
private ApiInfo buildApiInfo() {
return new ApiInfoBuilder()
.title("业务系统<>API文档")
.description("这里除了查看接口功能外,还提供了调试测试功能")
.contact("王延飞")
.version("1.0")
.build();
}
}

Swagger2的常用API

作用范围 注解 属性 备注
协议集描述
(修饰整个类,描述Controller的作用)
@Api value 字符串 可用在class头上,class描述
description 字符串
@Api(value = "xxx", description = "xxx")
协议描述
(描述一个类的一个方法,或者说一个接口)
@ApiOperation value 字符串 可用在方法头上.参数的描述容器
notes 字符串
@ApiOperation(value = "xxx", notes = "xxx")
单个参数描述 @ApiParam 用于方法,参数,字段说明
非对象参数集
(多个请求参数)
@ApiImplicitParams {} @ApiImplicitParam数组 可用在方法头上.参数的描述容器
@ApiImplicitParams({@ApiImplicitParam1,@ApiImplicitParam2,...})
非对象参数描述
(一个请求参数)
@ApiImplicitParam name 字符串 与参数命名对应 可用在@ApiImplicitParams
value 字符串 参数中文描述
required 布尔值 true/false
dataType 字符串 参数的数据类型 只作为标志说明,并没有实际验证
取值:Long、
String
paramType 字符串 查询参数类型(参数请求方式):query/path
query:对应@RequestParam?传递
path: 对应@PathVariable{}path传递
body:以流的形式提交 仅支持POST
header:参数在request headers 里边提交
form:以form表单的形式提交 仅支持POST
defaultValue 字符串 在api测试中默认值
用例参见项目中的设置
Response集
(HTTP响应整体描述)
@ApiResponses {} @ApiResponse数组 可用在方法头上.参数的描述容器
@ApiResponses({@ApiResponse1,@ApiResponse2,...})
Response
(HTTP响应其中1个描述)
@ApiResponse code 响应码(int型),可自定义 可用在@ApiResponses
message 状态码对应的响应信息 错误描述
@ApiResponse(code = 200, message = "Successful")
实体 @ApiModel 描述一个Model的信息(这种一般用在post创建的时候,使用 )
实体属性 @ApiModelProperty 描述一个model的属性
使用该注解忽略这个API @ApiIgnore
@Api:用在请求的类上,表示对类的说明
    tags="说明该类的作用,可以在UI界面上看到的注解"
    value="该参数没什么意义,在UI界面上也看到,所以不需要配置"
@ApiOperation:用在请求的方法上,说明方法的用途、作用
    value="说明方法的用途、作用"
    notes="方法的备注说明"
@ApiImplicitParams:用在请求的方法上,表示一组参数说明
    @ApiImplicitParam:用在@ApiImplicitParams注解中,指定一个请求参数的各个方面
        name:参数名
        value:参数的汉字说明、解释
        required:参数是否必须传
        paramType:参数放在哪个地方
            · header --> 请求参数的获取:@RequestHeader
            · query --> 请求参数的获取:@RequestParam
            · path(用于restful接口)--> 请求参数的获取:@PathVariable
            · body(不常用)
            · form(不常用)    
        dataType:参数类型,默认String,其它值dataType="Integer"       
        defaultValue:参数的默认值
@ApiResponses:用在请求的方法上,表示一组响应
    @ApiResponse:用在@ApiResponses中,一般用于表达一个错误的响应信息
        code:数字,例如400
        message:信息,例如"请求参数没填好"
        response:抛出异常的类
@ApiModel:用于响应类上,表示一个返回响应数据的信息
            (这种一般用在post创建的时候,使用@RequestBody这样的场景,
            请求参数无法使用@ApiImplicitParam注解进行描述的时候)
    @ApiModelProperty:用在属性上,描述响应类的属性


目录
相关文章
|
26天前
|
消息中间件 Java Kafka
Springboot集成高低版本kafka
Springboot集成高低版本kafka
|
1月前
|
NoSQL Java Redis
SpringBoot集成Redis解决表单重复提交接口幂等(亲测可用)
SpringBoot集成Redis解决表单重复提交接口幂等(亲测可用)
359 0
|
2月前
|
监控 安全 数据挖掘
51Tracking V4 API 集成应用场景
使用51Tracking V4 API,电商可构建物流追踪系统,自动化订单管理,提升效率;客服平台能实时查询物流,优化客户体验;数据分析工具则助企业分析物流数据以优化策略。关键点包括数据安全、API集成、Webhook处理及性能监控。记得合理管理API密钥,确保数据传输安全。
55 2
|
2月前
|
NoSQL Java Redis
小白版的springboot中集成mqtt服务(超级无敌详细),实现不了掐我头!!!
小白版的springboot中集成mqtt服务(超级无敌详细),实现不了掐我头!!!
299 1
|
4天前
|
JSON API 数据处理
【Swift开发专栏】Swift中的RESTful API集成实战
【4月更文挑战第30天】本文探讨了在Swift中集成RESTful API的方法,涉及RESTful API的基础概念,如HTTP方法和设计原则,以及Swift的网络请求技术,如`URLSession`、`Alamofire`和`SwiftyJSON`。此外,还强调了数据处理、错误管理和异步操作的重要性。通过合理利用这些工具和策略,开发者能实现高效、稳定的API集成,提升应用性能和用户体验。
|
4天前
|
缓存 NoSQL Java
springboot业务开发--springboot集成redis解决缓存雪崩穿透问题
该文介绍了缓存使用中可能出现的三个问题及解决方案:缓存穿透、缓存击穿和缓存雪崩。为防止缓存穿透,可校验请求数据并缓存空值;缓存击穿可采用限流、热点数据预加载或加锁策略;缓存雪崩则需避免同一时间大量缓存失效,可设置随机过期时间。文章还提及了Spring Boot中Redis缓存的配置,包括缓存null值、使用前缀和自定义过期时间,并提供了改造代码以实现缓存到期时间的个性化设置。
|
8天前
|
Java Spring
Spring Boot脚手架集成校验框架
Spring Boot脚手架集成校验框架
17 0
|
9天前
|
Java Docker 容器
SpringBoot项目集成XXL-job
SpringBoot项目集成XXL-job
|
11天前
|
Java 关系型数据库 数据库
【SpringBoot系列】微服务集成Flyway
【4月更文挑战第7天】SpringBoot微服务集成Flyway
【SpringBoot系列】微服务集成Flyway
|
16天前
|
前端开发 安全 Java
springboot集成springdoc-openapi(模拟前端请求)
springboot集成springdoc-openapi(模拟前端请求)