前言

在开始接触后端接口,或者做客户端联调的时候,经常会听到一个词:

Swagger

一开始我完全不理解它是什么,只知道“好像是看接口用的”。
后来慢慢发现,它其实是开发中非常重要的一环。

这篇文章就记录一下我对 Swagger 的理解。

Swagger 是什么?

Swagger 是一套用于描述和管理 API 接口的工具和规范。

你可以把它理解为:

接口说明书 + 在线调试工具

它解决了什么问题?

在没有 Swagger 的情况下,接口通常是这样沟通的:

  • 后端:你调 /login 接口
  • 前端:参数怎么传?
  • 后端:传 usernamepassword
  • 前端:返回什么?
  • 后端:返回用户信息

听起来没问题,但一联调就容易出问题:

  • 参数名不一致
  • 数据结构不一致
  • 返回格式理解不同
  • 某些字段可能为 null 没说清

问题的本质是:接口没有标准化描述。

Swagger 做了什么?

Swagger 把接口变成一个可视化文档页面,并且结构非常清晰。

一个接口通常包含:

  • 接口路径(URL)
  • 请求方式(GET / POST)
  • 参数说明
  • 参数类型
  • 是否必填
  • 返回数据结构
  • 示例数据

举个例子

假设有一个接口:

获取玩家信息

Swagger 中可能会这样展示:

GET /api/player/{id}

参数说明

参数名类型必填说明
idint玩家 ID

返回示例

{
  "id": 1,
  "name": "PlayerA",
  "level": 10
}

Swagger 的一个强力功能:在线测试

Swagger 页面通常会有一个按钮:

Try it out

你可以直接:

  1. 输入参数
  2. 点击发送请求
  3. 查看返回结果

相当于一个内置的接口调试工具。

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
  • 类型不一定是你想的那样,比如 intstring
  • 返回结构可能有一层包裹,比如 dataresult
  • 有些接口需要 token
  • 请求方式(GET / POST)容易写错

我的理解总结

我现在对 Swagger 的理解是:

它不是单纯的“某个工具”,而是“接口的标准表达方式”。

它的核心价值是:

  • 减少沟通成本
  • 提高联调效率
  • 明确接口规范

一句话总结

Swagger = 用来展示和测试接口的文档工具。

后续可以继续学习

如果继续深入,可以了解:

  • 如何通过 Swagger 写接口请求代码
  • Unity 中如何封装网络层
  • JSON 解析与数据结构映射
  • 接口错误处理(code / message

结尾

当你开始做“客户端 + 服务端交互”时,
Swagger 基本就是你的“地图”。

没有它,就像在迷雾里乱跑。
有了它,你至少知道路在哪。