用 Swagger 实现接口文档
创作时间:
作者:
@小白创作中心
用 Swagger 实现接口文档
引用
CSDN
1.
https://blog.csdn.net/Be_racle/article/details/140413932
《接口设计》系列,共包含以下 5 篇文章:
- 前后端的通信方式 REST
- 如何设计统一 RESTful 风格的数据接口
- 为 APP、PC、H5 网页提供统一风格的 API(实战篇,附源码地址)
- 用 Swagger 实现接口文档
- 学会用 RestTemplate 发请求
在项目开发中,一般都是由前后端工程师共同定义接口,编写接口文档,之后大家根据这个接口文档进行开发、维护。为了便于编写和维护稳定,可以使用 Swagger 来编写 API 接口文档,以提升团队的沟通效率。
下面演示如何在 Spring Boot 中集成 Swagger。
1.配置 Swagger
1.1 添加 Swagger 依赖
<!--Swagger依赖-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<!--Swagger-UI依赖 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
1.2 创建 Swagger 配置类
创建 Swagger 配置类,完成相关配置项,见以下代码:
package com.example.demo.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
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;
/**
* Swagger 配置类
* 在与 Spring Boot 集成时,放在与 Application.java 同级的目录下
*/
@Configuration
@EnableSwagger2
public class SwaggerConfig {
/**
* 创建 API 应用
* 本例采用指定扫描的包路径来定义指定要建立 API 的目录
*/
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.example.demo.controller"))
.paths(PathSelectors.any())
.build();
}
/**
* 创建该 API 的基本信息(这些基本信息会展现在文档页面中)
* 访问地址:http://项目实际地址/swagger-ui.html
*/
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title(" RESTful APIs")
.description("RESTful APIs")
.termsOfServiceUrl("http://localhost:8080/")
.contact("pipi")
.version("1.0")
.build();
}
}
@Configuration:让 Spring 来加载该类配置。@EnableSwagger2:启用 Swagger2。createRestApi函数创建 Docket 的 Bean。apiInfo():用来展示该 API 的基本信息。select():返回一个 ApiSelectorBuilder 实例,用来控制哪些接口暴露给 Swagger 来展现。apis(RequestHandlerSelectors.basePackage()):配置包扫描路径。Swagger 会扫描包下所有 Controler 定义的 API,并产生文档内容。如果不想产生 API,则使用注解@ApiIgnore。
2.编写接口文档
在完成上述配置后,即生成了文档,但是这样生成的文档主要针对请求本身,而描述自动根据方法等命名产生,对用户并不友好。所以,通常需要自己增加一些说明以丰富文档内容。可以通过以下注解来增加说明。
@Api:描述类/接口的主要用途。@ApiOperation:描述方法用途,给 API 增加说明。@ApiImplicitParam:描述方法的参数,给参数增加说明。@ApiImplicitParams:描述方法的参数(Multi-Params),给参数增加说明。@ApiIgnore:忽略某类/方法/参数的文档。
具体使用方法见以下代码:
package com.example.demo.controller;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.annotations.ApiIgnore;
@RestController
public class HelloWorldController {
@ApiOperation(value = "hello", notes = "notes")
@RequestMapping("/hello")
public String hello() throws Exception {
return "HelloWorld ,Spring Boot!";
}
// 使用该注解忽略这个 API
@ApiIgnore
@RequestMapping(value = "/ignoreApi")
public String ignoreApi() {
return "HelloWorld ,Spring Boot!";
}
}
完成上述代码后,启动项目,访问 http://localhost:8080/swagger-ui.html 就能看到所展示的 RESTful API 的页面,可以通过单击具体的 API 测试请求,来查看代码中配置的信息,以及参数的描述信息。
热门推荐
深圳最适合亲子游玩的12座山,一定要带家人去
谈谈笔记的标签与分类
空调出风口拆卸清洗步骤详解
八字中财印官的意义与解析实例
混凝土需要沙子,但却不能用沙漠里的沙子,为什么?
脚部臭汗症是什么原因造成的?怎么治疗
轮胎生产工艺流程详解:从原材料到成品的精密制造
长期早上喝白开水冲鸡蛋的好处与坏处:科学解析及健康建议
AI智能体市场动态:汉得信息与岩山科技资金流出引关注
退役锂电池的回收与循环利用:新能源行业可持续发展之路
锂电池回收利用行业现状及发展建议
儿童早期矫治的常见问题 看完这篇不纠结
平凡之骨,巅峰之路——深度解读《凡骨》的修仙传奇
儿童早矫的黄金时间 6-13岁分三个阶段都可以进行早期矫正
陕南美食 | 隐匿在西北的独特风味
氨氮和总氮有什么区别
DeepSeek,是如何开启“AI的安卓时刻”的?
白杨文化:最全的影视剧拍摄流程
2024五一热度最高的10个城市,都值得去,避开节假日去
元宵售卖进入高峰,京城老字号增加人手压缩排队时间
大理苍山徒步攻略:四条经典路线详解
揭秘猫胡子变白的五个关键原因及其影响
赵姓的来源历史与文化:起源、迁徙、名人及堂号
获取身份证明的步骤与注意事项:让身份认证变得简单易行
便携式流速仪:高精度测量技术,确保流速数据的准确无误
安全事故等级划分标准是什么?
DeepSeek出的元宵灯谜,你能猜出几个?
电子工程师怎么快速提升自己?
康熙和乾隆在位时间都长达60年 两人寿命为何那么长
学霸怎样整理桌子,打造高效学习空间