直接回答:Swagger 页面调接口最难受的是参数没法格式化、返回结果没法折叠、登录态没法保持。把 Swagger 的接口定义(/v3/api-docs 或 /v2/api-docs)导入 Postman,就能在 Postman 里享受格式化、折叠、保存示例和各种环境切换,而接口变更时重新导入即可。
第一步:拿到接口定义地址
Swagger / Knife4j 页面背后都有一份机器可读的定义文档,通常是:
1 | http://<host>/v3/api-docs # OpenAPI 3 |
在浏览器里打开这个地址,能看到一大段 JSON 就对了。如果开了权限控制,需要先带上凭据访问。
第二步:导入 Postman
三种方式,按方便程度排序:
- 导入链接:Postman 里
Import→Link,粘贴上面那个 JSON 地址。接口定义更新后重新拉一次就能刷新; - 导入文件:把 JSON 下载到本地再导入,适合内网环境;
- 在线文档地址:部分 Postman 版本支持直接填 Swagger UI 的地址。
导入后会生成一个 Collection,按 tag 分好文件夹,接口名、参数、示例值都在。
第三步:用环境变量管理地址和令牌
这是比在 Swagger 页面里点来点去最明显的优势。新建一个环境(比如 dev),把易变的东西都放进去:
| 变量 | 值 |
|---|---|
baseUrl |
http://127.0.0.1:8080 |
token |
留空,登录后自动写入 |
请求地址写成 {{baseUrl}}/api/user/{{userId}},切换环境就是切换后端地址,不用一个个改。
顺手把 baseUrl 加到 Collection 的变量里,新导入的接口不用再手改地址。
第四步:解决需要登录才能调的接口
两种做法,看接口用哪种鉴权:
做法一:统一加请求头
在 Collection 的 Authorization 或 Pre-request Script 里统一加:
1 | pm.request.headers.add({ key: 'Authorization', value: 'Bearer ' + pm.environment.get('token') }); |
做法二:自动登录并写入 token
在登录接口的 Tests 里解析响应,把 token 存进环境变量:
1 | const res = pm.response.json(); |
这样每次点一次登录接口,后面所有接口的凭据就都更新了,比手工复制粘贴靠谱。
还能顺手做的事
- 保存示例响应:调通一次之后把响应存成 Example,接口报错时可以拿来对照;
- 写断言:在
Tests里加pm.response.to.have.status(200),跑 Collection Runner 时能批量验证; - 团队共享:把 Collection 同步到团队空间,新同事导入后直接可用;
- 生成代码:右侧
Code可以直接生成 curl、Python、Java 等语言的调用代码,贴进 bug 描述或文档很方便。
局限与替代
这套做法也有几个明显的短板:
- 导入是一次性的,接口变了要手动重新导入,Postman 不会自动同步;
- 接口多的时候 Collection 会很臃肿,搜索和维护都费劲;
- Postman 越来越重,账号体系、云同步对纯内网团队不友好。
替代工具值得看一眼:Apifox 把接口文档、调试、Mock 和自动化测试放在一起,和 Swagger 的同步更自然;Bruno 把接口定义存成本地文件,适合要进 Git 管理的团队;命令行场景用 curl + httpie 反而最快。
小结
- 接口定义地址(
/v3/api-docs)是入口,导入 Postman 就拿到了全部接口; - 环境变量管地址和令牌,是这套流程能长期用的关键;
- 用登录接口的
Tests自动写入 token,避免手工复制; - 接口频繁变动、团队协作要求高时,考虑换 Apifox 或 Bruno。
本文整理自我自己早先收集的一份 Postman 使用资料,按实际操作顺序重新写了一遍,并补充了局限与其他工具的比较,文字由 AI 协助改写后经我复核。Postman 的界面与功能随版本变化,具体以所用版本为准。
这篇笔记整理自我自己的实践记录,如果做法有出入,或者你踩过别的坑,欢迎到留言板一起聊聊。