之前使用 Postman 来管理 API,如何迁移到 Apifox?
上一篇推文讲到用 Swagger 管理的 API 怎么迁移到 Apifox,有许多同学反馈说能不能介绍一下 Postman 的迁移以及迁移过程中需要注意的事项。
那么今天,它来了!
从 Postman 迁移到 Apifox 的方法有两种:
- 导出 Postman 集合(Collection)文件再导入到 Apifox
- 通过开放 API 导入
下面详细介绍具体操作。
方法一:导出 Postman 集合文件再导入到 Apifox
要把 API 手动从 Postman 迁移到 Apifox,需要在 Postman 中先将集合(Collection)导出为 JSON 文件,然后再将 JSON 格式的文件导入到 Apfox。
具体操作如下:
1.导出 Postman 集合文件
在 Postman 中打开一个项目,在项目的左侧栏中,找到你想要迁移的集合(Collection),点击集合右侧的三个小点图标,选择「Export」。
在弹出的对话框中,选择「Collection v2.1」格式,点击「Export」按钮,选择保存路径并保存为 JSON 文件。
接下来,我们需要将导出的 JSON 文件导入到 Apifox 中。
2.导入到 Apifox
在 Apifox 中打开一个项目,在左侧边栏依次选择【项目设置 -> 导入数据 -> Postman】,在这里,上传之前导出的 JSON 文件。
上传文件后,Apifox 会自动解析并导入,你可以在弹出的预览框中进行进一步的筛选和管理。
导入成功后可以在项目中查看对应的接口,如果在 Postman 的集合或接口中写有 Scripts 脚本,也会一并进行迁移。Apifox 完全兼容 Postman 的脚本语法,所以脚本不需要做其它任何的更改,在进行接口调试时可以直接运行。
在 Postman 中往往会使用一个变量(例如{{baseUrl}}
)来指定前置 URL(例如 http://127.0.0.1:8080
),迁移到 Apifox 时,其前置 URL 会自动转换为 Apifox 「环境管理」中的「服务」。
Postman 中的变量有三种类型,分别是集合变量、环境变量和全局变量。其中,Postman 的集合变量会被自动迁移到 Apifox 的全局变量里。
但是,Postman 中的全局变量和环境变量不会包含在导出的 JSON 文件中。因此,这些变量需要单独导出为 JSON 文件,然后再迁移到 Apifox。
要导出 Postman 的全局变量,依次选择【Environments -> Globals -> Export】,然后导出为 JSON 文件即可。
要导出 Postman 的环境变量,只需在 Environments 中,点击环境名称右侧的三个小点图标,然后选择「Export」即可。
全局/环境变量的 JSON 文件导出之后,就可以导入到 Apifox 中,在项目的左侧边栏依次选择【项目设置 -> 导入数据 -> Postman】,然后上传已导出的全局/环境变量文件,确定导入即可。
导入完成后,你可在 Apifox 的环境管理中查看导入的变量。注意,导入的只是变量,「前置 URL」还需要手动在这里添加。
并且,如果设置有多个「前置 URL」,还需要在「接口」或者「目录」层级中确认是否是该接口所需的。
方法二:通过开放 API 导入
除了手动导入文件,Apifox 还提供了一个开放 API 接口,可以直接通过 API 导入 Postman Collection v2 格式的数据,开放 API 文档地址为https://apifox-openapi.apifox.cn/
。
具体导入的操作步骤如下:
1. 获取 API 访问令牌
在 Apifox 中,点击页面右上角的个人头像,选择【账号设置 -> API 访问令牌】选项,在这里生成一个 API 访问令牌(access_token),该令牌用于身份验证,可根据需要设定令牌有效期。
2. 获取项目 ID
在 Apifox 中,选择【项目设置 -> 基本设置】即可查看项目 ID。项目 ID 是每个项目的唯一标识符,在调用 API 时需要用到它,以确保数据导入到正确的项目中。
3. 调用开放 API
要将 Postman Collection v2 格式的数据导入到 Apifox 中,可以调用以下接口:
POST https://api.apifox.com/v1/projects/{projectId}/import-postman-collection
通过调用上述接口,可以将数据导入指定项目。下面是相关必需参数的说明:
Path 参数
参数名称 | 参数类型 | 是否必需 | 描述 |
projectId | String | 必需 | 项目 ID,用于指定要导入数据的目标项目。 |
示例:
https://api.apifox.com/v1/projects/3760990/import-postman-collection
Body 参数
参数名称 | 参数类型 | 是否必需 | 描述 |
input | String | 必需 | 要导入的字符串化后的 JSON 对象。 |
示例:
{
"input":"{\"info\":{\"name\":\"Sample Collection\",\"_postman_id\":\"12345-67890-abcdef-ghijk\",\"description\":\"This is a sample Postman Collection\",\"schema\":\"https://schema.getpostman.com/json/collection/v2.1.0/collection.json\"},\"item\":[{\"name\":\"Sample GET Request\",\"request\":{\"method\":\"GET\",\"header\":[],\"url\":{\"raw\":\"https://jsonplaceholder.typicode.com/posts\",\"protocol\":\"https\",\"host\":[\"jsonplaceholder\",\"typicode\",\"com\"],\"path\":[\"posts\"]}},\"response\":[]}]}",
"options": {
"targetEndpointFolderId": 0,
"endpointOverwriteBehavior": "OVERWRITE_EXISTING",
"endpointCaseOverwriteBehavior": "OVERWRITE_EXISTING",
"updateFolderOfChangedEndpoint": false
}
}
Header 参数除了上述必要的入参,还需要在请求头中携带相关的认证信息,如下:
参数名称 | 参数类型 | 是否必需 | 描述 |
X-Apifox-Api-Version | String | 必需 | 开放 API 版本号,目前支持的版本为 2024-03-28 。 |
Authorization | String | 必需 | 身份认证,格式为 Bearer 个人访问令牌 ,也就是上述第 1 步获取到的 API 访问令牌。 |
示例:
'X-Apifox-Api-Version':'2024-03-28'
'Authorization':'Bearer APS-OVWel6j5103zaaaaaaQle99fGNBw8ucH'
4. 返回响应示例
接口调用成功后,将返回一个类似如下示例的 JSON 响应,包含导入过程中的统计信息,如新增、更新和忽略的接口数量等。如果返回错误信息,需要仔细检查入参是否漏了哪些必填的参数,或者检查导入的数据格式是否正确。
{
"data": {
"counters": {
"endpointCreated": 10,
"endpointUpdated": 0,
"endpointFailed": 0,
"endpointIgnored": 0,
"endpointFolderCreated": 0,
"endpointFolderUpdated": 0,
"endpointFolderFailed": 0,
"endpointFolderIgnored": 0,
"endpointCaseCreated": 0,
"endpointCaseUpdated": 0,
"endpointCaseFailed": 0,
"endpointCaseIgnored": 0
}
}
}
5. 查看导入结果
导入完成后,可以在 Apifox 对应的项目中查看导入的 API 文档。要了解其它更多详细的入参、响应信息,请参考 Apifox 的开放 API 文档。
常见问题解答
1.Postman 中的 Pre-request 脚本在 Apifox 的哪里?
Pre-request 相当于 Apifox 的「前置操作」,Post-response 相当于 Apifox 的「后置操作」,迁移完成后,你可在对应接口或目录的「前/后置操作」中查看脚本。
2.Postman 中接口的前置 URL 变量到哪里去了?
在 Postman 中,接口使用变量(例如{{baseUrl}}
)来存放前置 URL(例如 http://127.0.0.1:8080
)。而在 Apifox 中,前置 URL 独立存放于「环境管理」中的「服务」。在进行迁移时,{{baseUrl}}
会自动转换为 Apifox 中的「服务」。这么做是为了避免两者混淆,明确区分变量和前置 URL,更方便进行管理。
在接口发送请求时,只需在页面右上角切换相应的环境,Apifox 就会自动拼接前置 URL。
并且在微服务架构中,在环境里设置了多个前置 URL 时,还可以根据需要在「接口」或「目录」层级指定对应的服务(前置 URL),非常的方便。
总结
通过以上两种方法,可以顺利地将 API 项目从 Postman 迁移到 Apifox。可以前往 Apifox 官方 B 站账号查看视频版教程。
如果在迁移过程中遇到问题,可以参考 Apifox 的官方文档或者联系我们的技术支持,以获取更多帮助。
当然,Apifox 还有很多惊喜等你发现。如果使用过程中有任何问题或建议,欢迎随时在用户群反馈给我们。我们会持续更新升级,致力于为大家提供更好的使用体验。