Swagger完全教程

简介

Swagger 是最流行的 API 开发工具,它遵循 OpenAPI Specification(OpenAPI 规范,也简称 OAS)。
Swagger 可以贯穿于整个 API 生态,如 API 的设计、编写 API 文档、测试和部署。
Swagger 是一种通用的,和编程语言无关的 API 描述规范。

应用场景

  • 如果你的 RESTful API 接口都开发完成了,你可以用 Swagger-editor 来编写 API 文档( yaml 文件 或 json 文件),然后通过 Swagger-ui 来渲染该文件,以非常美观的形式将你的 API 文档,展现给你的团队或者客户。
  • 如果你的 RESTful API 还未开始,也可以使用 Swagger ,来设计和规范你的 API,以 Annotation (注解)的方式给你的源代码添加额外的数据。这样,Swagger 就可以检测到这些数据,自动生成对应的 API 文档。

规范

Swagger Specification(Swagger 规范),规定了如何对 API 的信息进行正确描述。
Swagger 规范,以前称作 Swagger Specification,现在称作 OpenAPI Specification(简称 OAS)。
Swagger 规范本身是与编程语言无关的,它支持两种语法风格:

  • YAML 语法
  • JSON 语法

这两种语法风格可以相互转换,都可以用来对我们的 RESTful API 接口的信息进行准确描述,便于人类和机器阅读。
在 Swagger 中,用于描述 API 信息的文档被称作 Swagger 文档。Swagger 的规范主要有两种:

  • Swagger 2.0
  • OpenAPI 3.0

关于 Swagger 规范的详细信息,请参考官方文档

Swagger文档

Swagger 文档(文件),指的是符合 Swagger 规范的文件,用于对 API 的信息进行完整地描述。
Swagger 文档是整个 Swagger 生态的核心。
Swagger 文档的类型有两种:yaml 文件和 json 文件。
yaml 文件用的是 YAML 语法风格;json 文件用的是 JSON 语法风格。这两种文件都可以用来描述 API 的信息,且可以相互转换。
简单的说,Swagger 文档就是 API 文档,只不过 Swagger 文档是用特定的语法来编写的。Swagger 文档本身看起来并不美观,这时,就需要一个好的 UI 工具将其渲染一番,这个工具就是 Swagger-ui。
我们可以用任何编辑器来编写 Swagger 文档,但为了方便在编辑的同时,检测 Swagger 文档是否符合规范,就有了 Swagger-editor 编辑器。
Swagger完全教程_第1张图片

Swagger工具

Swagger提供了多种工具,帮助解决api的不同的情况下的问题
Swagger完全教程_第2张图片

Swagger-editor

【功能】

  • 编写 Swagger 文档
  • 实时检测 Swagger 文档是否符合 Swagger 规范
  • 调试 Swagger 文档里描述的 API 接口
  • 转换 Swagger 文档(yaml 转 json,或 json 转 yaml)

【安装】

  • Web 版本的 Swagger-editor 直接运行在公网上,Swagger 已经给我们配置好了在线的 Swagger-editor。
  • 也可以选择本地运行 Swagger-editor,需要 Node.js 环境支持。

本文使用docker部署,下载swagger-editor的容器

docker pull swaggerapi/swagger-editor
docker run -d -p 81:8080 swaggerapi/swagger-editor 
//启动,81:8080 将容器的8080端口暴露给localhost的81端口

在浏览中输入:localhost:81,就可以在容器中编辑api文档
Swagger完全教程_第3张图片
【使用说明】
Swagger-editor 分为菜单栏和主体界面两个部分。
主体界面分为左右两栏,左侧是编辑区,右侧是显示区。

  • 编辑区里默认有一个 Swagger 文档的样例,你可以将其清空,编写自己的 API 描述。
  • 显示区是对应编辑区中的Swagger 文档的 UI 渲染情况,也就是说,右侧显示区的结果和使用 Swagger-ui 渲染 Swagger 文档后的显示结果基本一致。

Swagger-editor 的菜单栏包含以下几个菜单:

  • File: 用于导入、导出、转换、清空 Swagger 文档
  • Edit: 用于转换为标准的 YAML 格式文件,比如删除空白行等
  • Generate Server: 用于构建服务器端 stub
  • Generate Client: 用于构建客户端 SDK

选择菜单栏【File】Save as YAML,保存为swagger.yaml文件,就是我们所说的swagger文档。

文档编辑参考swagger从入门到精通

Swagger-ui

Swagger-ui 是一套 HTML/CSS/JS 框架,用于渲染 Swagger 文档,以便提供美观的 API 文档界面。也就是说,Swagger-ui 是一个 UI 渲染工具。
【安装】
docker部署,下载swagger-ui的容器

docker pull swaggerapi/swagger-ui

【使用】

  1. 使用上面部署的Swagger-editor,在编辑框中完成文档编辑后在页面上上方点击 File -> Download JSON,将文件下载到本地(/Users/jiangsuyao/Downloads)命名为swagger.json
  2. json文件挂在到容器中
//-e:执行容器中/foo/swagger.json
//-v:将/Users/fanfan/Downloads中的swagger.json挂在到 /foo中执行
docker run -p 82:8080 -e SWAGGER_JSON=/foo/swagger.json -v /Users/jiangsuyao/Downloads:/foo swaggerapi/swagger-ui

浏览器输入:localhost:82,即可看到与Swagger-editor的显示区同样的内容
Swagger完全教程_第4张图片
【基于swagger-ui的接口测试】
1. 选择接口点击【try it out】
Swagger完全教程_第5张图片
2. 修改“Example Value Model”里面参数,点击“Execute”发送请求
Swagger完全教程_第6张图片
3. 点击发送后会出现下面视图,不管发送成功/失败。你可以通过下面视图来查看请求数据:
Swagger完全教程_第7张图片
【springboot集成swagger-ui自动生成API文档】

  1. 添加依赖
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.2.2</version>
</dependency>

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.2.2</version>
</dependency>
  1. 编写配置文件
    在application同级目录新建swagger2文件,添加swagger2配置类

你可能感兴趣的:(swagger,swagger)