一、Swagger是什么?
Swagger是一套开源的API文档工具,它能够为RESTful Services自动生成API文档,还能提供在线API测试功能,并且生成客户端的API SDK。Swagger最初是由Tony Tam在2011年创建的。从那以后,Swagger已经发展成为一个极受欢迎的API文档工具。 Swagger 在其生命周期内经过了许多变化,从Swagger 1.2 到 Swagger 2.0,直到成为 OpenAPI ,而这个变化也可以解释为许多人按照之前的 Apache 2.0 许可证核心创建了该项目。
二、Swagger的核心维度
在 Swagger 之中,有三个核心维度:
Swagger Spec:该规范定义了使用 JSON 或 YAML 的 APIs 描述文件的结构。它支持 RESTful APIs 的描述,使得 RESTful APIs 的定义和使用更加简单和规范。
Swagger Editor:Swagger Editor 是一个用于编辑 Swagger API 设计的工具。通过简单而强大的编辑器,它可以帮助用户轻松创建,编辑和维护 Swagger API 规范。
Swagger UI:Swagger UI 允许用户通过浏览器来交互式的查看和试验 API 文档。 用户可以通过一个界面来测试 API 的各个端点,而不需要终端或第三方应用程序支持。
三、如何使用Swagger?
下面我们将介绍如何在Spring Boot应用程序中使用Swagger。
1. 添加Swagger依赖项
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
2. 启用Swagger
启用Swagger 需要添加@Configuration注解,以便将Swagger添加为一个 Spring Bean。这可以通过在应用程序中创建 @Bean 声明方式来完成。
package com.example.demo;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Configuration
@EnableSwagger2
@EnableWebMvc
public class SwaggerConfig extends WebMvcConfigurerAdapter {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build();
}
}
3. 使用Swagger来注释APIs
上面的配置让你能够查看你 Spring Boot 项目中的所有 API 列表,但是如果你想为 API 添加更多的描述、tags 和请求示例,那就需要添加更多的注释了。简单地把Swagger扫描过的范围配置在所有@RequestMapping注解的方法上,并在注解中描述每个特定的API。
@RestController
@RequestMapping("/user")
public class UserController {
@ApiOperation(value = "获取用户详细信息", notes = "根据url的id来获取用户详细信息")
@ApiImplicitParam(name = "id", value = "用户ID", required = true, dataType = "Long", paramType = "path")
@RequestMapping(value = "/{id}", method = RequestMethod.GET)
public User getUserById(@PathVariable(value = "id") Long id) {
// ...
}
@ApiOperation(value = "添加用户", notes = "根据User对象创建用户")
@ApiImplicitParam(name = "user", value = "用户详细实体user", required = true, dataType = "User")
@RequestMapping(value = "/add", method = RequestMethod.POST)
public String addUser(@RequestBody User user) {
// ...
}
}
四、Swagger界面展示与说明
Swagger UI 是 Swagger 最突出的特点之一。它提供了一个易于使用 Web 接口来查看、测试和文档化 API。Swagger UI 是Swagger规范的 HTML/CSS/JavaScript 体现形式。因此,您可以将这个界面引入到您的现有项目中,以测试您的 API。
最常见的 Swagger UI 是内置在 Swagger-editor 工具中提供的 UI。该 UI 允许您可视化定义您的 API 并文档化您的 API 存储库。
通过在 Web 浏览器中导航到 Swagger UI 项目并选择并输入一个 OpenAPI(以 Swagger 2.0兼容体验) 规范注册表,您可以将Swagger UI 与您的 API 对接,从而创造一个互动式的 API 文档和操作界面。
效果如图所示:
<img src="https://img-blog.csdn.net/20171025225006921?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZ3Vvb25nZW43MjUx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/75"
alt="SwaggerUI"
title="SwaggerUI"
style="display:block;margin:auto;width:80%;">