前言
在开始接触后端接口,或者做客户端联调的时候,经常会听到一个词:
Swagger
一开始我完全不理解它是什么,只知道“好像是看接口用的”。
后来慢慢发现,它其实是开发中非常重要的一环。
这篇文章就记录一下我对 Swagger 的理解。
Swagger 是什么?
Swagger 是一套用于描述和管理 API 接口的工具和规范。
你可以把它理解为:
接口说明书 + 在线调试工具
它解决了什么问题?
在没有 Swagger 的情况下,接口通常是这样沟通的:
- 后端:你调
/login接口 - 前端:参数怎么传?
- 后端:传
username和password - 前端:返回什么?
- 后端:返回用户信息
听起来没问题,但一联调就容易出问题:
- 参数名不一致
- 数据结构不一致
- 返回格式理解不同
- 某些字段可能为
null没说清
问题的本质是:接口没有标准化描述。
Swagger 做了什么?
Swagger 把接口变成一个可视化文档页面,并且结构非常清晰。
一个接口通常包含:
- 接口路径(URL)
- 请求方式(GET / POST)
- 参数说明
- 参数类型
- 是否必填
- 返回数据结构
- 示例数据
举个例子
假设有一个接口:
获取玩家信息
Swagger 中可能会这样展示:
GET /api/player/{id}
参数说明
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | int | 是 | 玩家 ID |
返回示例
{
"id": 1,
"name": "PlayerA",
"level": 10
}
Swagger 的一个强力功能:在线测试
Swagger 页面通常会有一个按钮:
Try it out
你可以直接:
- 输入参数
- 点击发送请求
- 查看返回结果
相当于一个内置的接口调试工具。
Swagger 和联调的关系
如果你之前了解过“联调”,那 Swagger 基本就是联调神器。
联调的本质是:
检查模块之间的数据和接口是否一致。
Swagger 帮你解决:
- 参数名是否一致
- 数据结构是否一致
- 返回字段是否正确
- 接口是否可用
在 Unity 项目中的作用
如果你以后做联网游戏,哪怕只是简单后端,Swagger 都会很有用。
比如你要接这些接口:
- 登录
- 获取角色数据
- 获取背包
- 升级角色
- 获取排行榜
你可以通过 Swagger:
- 确认接口地址
- 确认请求参数
- 确认返回结构
- 提前测试接口是否正常
然后再写 Unity 代码,例如:
using UnityEngine.Networking;
public class ApiExample
{
public void Request(string url)
{
UnityWebRequest request = UnityWebRequest.Get(url);
}
}
这样排错会轻松很多。
Swagger 和 OpenAPI 的关系
这个点很多人会混淆,简单讲一下:
| 名称 | 作用 |
|---|---|
| Swagger | 工具和生态 |
| OpenAPI | 接口规范 |
它们的关系可以简单理解为:
Swagger 使用 OpenAPI 规范来生成接口文档。
不过实际开发中,大家还是习惯统称为 Swagger。
常见使用场景
- 前后端开发协作
- 客户端(Unity / App)接后端
- 接口调试
- 自动生成 API 文档
- 测试接口是否正常
常见坑
在使用 Swagger 或接口文档时,注意这些问题:
- 字段可能为
null - 类型不一定是你想的那样,比如
int和string - 返回结构可能有一层包裹,比如
data或result - 有些接口需要 token
- 请求方式(GET / POST)容易写错
我的理解总结
我现在对 Swagger 的理解是:
它不是单纯的“某个工具”,而是“接口的标准表达方式”。
它的核心价值是:
- 减少沟通成本
- 提高联调效率
- 明确接口规范
一句话总结
Swagger = 用来展示和测试接口的文档工具。
后续可以继续学习
如果继续深入,可以了解:
- 如何通过 Swagger 写接口请求代码
- Unity 中如何封装网络层
- JSON 解析与数据结构映射
- 接口错误处理(
code/message)
结尾
当你开始做“客户端 + 服务端交互”时,
Swagger 基本就是你的“地图”。
没有它,就像在迷雾里乱跑。
有了它,你至少知道路在哪。
Comments
评论区
欢迎在这里留言交流。