API 管理工具迁移:从 Postman 到 Apifox 的最佳实践

继承苔藓
• 阅读 150

上一篇推文讲到用 Swagger 管理的 API 怎么迁移到 Apifox,有许多同学反馈说能不能介绍一下 Postman 的迁移以及迁移过程中需要注意的事项。那么今天,它来了!

从 Postman 迁移到 Apifox 的方法有两种:

  1. 导出 Postman 集合 (Collection) 文件再导入到 Apifox
  2. 通过开放 API 导入

下面详细介绍具体操作。

一、导出 Postman 集合文件后导入

要把 API 手动从 Postman 迁移到 Apifox,需要在 Postman 中先将集合 (Collection) 导出为 JSON 文件,然后再将 JSON 格式的文件导入到 Apfox。具体操作如下:

1、导出 Postman 集合文件

Postman 中打开一个项目,在项目的左侧栏中,找到你想要迁移的集合 (Collection) ,点击集合右侧的三个小点图标,选择「Export」。

API 管理工具迁移:从 Postman 到 Apifox 的最佳实践

在弹出的对话框中,选择「Collection v2.1」格式,点击「Export」按钮,选择保存路径并保存为 JSON 文件。

API 管理工具迁移:从 Postman 到 Apifox 的最佳实践

接下来,我们需要将导出的 JSON 文件导入到 Apifox 中。

2、导入到 Apifox

在 Apifox 中打开一个项目,在左侧边栏依次选择「项目设置 -> 导入数据 -> Postman」,在这里,上传之前导出的 JSON 文件。

API 管理工具迁移:从 Postman 到 Apifox 的最佳实践

上传文件后,Apifox 会自动解析并导入,你可以在弹出的预览框中进行进一步的筛选和管理。

API 管理工具迁移:从 Postman 到 Apifox 的最佳实践

导入成功后可以在项目中查看对应的接口,如果在 Postman 的集合或接口中写有 Scripts 脚本,也会一并进行迁移。Apifox 完全兼容 Postman 的脚本语法,所以脚本不需要做其它任何的更改,在进行接口调试时可以直接运行。

API 管理工具迁移:从 Postman 到 Apifox 的最佳实践

在 Postman 中往往会使用一个变量 (例如{{baseUrl}}) 来指定前置 URL(例如 http://127.0.0.1:8080 ,迁移到 Apifox 时,它会自动转换为 Apifox 「环境管理」中的「服务」。

API 管理工具迁移:从 Postman 到 Apifox 的最佳实践

Postman 中的变量有三种类型,分别是集合变量、环境变量和全局变量。其中,Postman 的集合变量会被自动迁移到 Apifox 的全局变量里。

API 管理工具迁移:从 Postman 到 Apifox 的最佳实践

但是,Postman 中的全局变量和环境变量不会包含在导出的 JSON 文件中。因此,这些变量需要单独导出为 JSON 文件,然后再迁移到 Apifox。

要导出 Postman 的全局变量,依次选择「Environments -> Globals -> Export」,然后导出为 JSON 文件即可。

API 管理工具迁移:从 Postman 到 Apifox 的最佳实践

要导出 Postman 的环境变量,只需在 Environments 中,点击环境名称右侧的三个小点图标,然后选择「Export」即可。

API 管理工具迁移:从 Postman 到 Apifox 的最佳实践

全局/环境变量的 JSON 文件导出之后,就可以导入到 Apifox 中,在项目的左侧边栏依次选择「项目设置 -> 导入数据 -> Postman」,然后上传已导出的全局/环境变量文件,确定导入即可。

API 管理工具迁移:从 Postman 到 Apifox 的最佳实践

导入完成后,你可在 Apifox 的环境管理中查看导入的变量。注意,导入的只是变量,「前置 URL」还需要手动在这里添加。

API 管理工具迁移:从 Postman 到 Apifox 的最佳实践

并且,如果设置有多个「前置 URL」,还需要在「接口」或者「目录」层级中确认是否是该接口所需的。

API 管理工具迁移:从 Postman 到 Apifox 的最佳实践

二、通过开放 API 导入

除了手动导入文件,Apifox 还提供了一个开放 API 接口,可以直接通过 API 导入 Postman Collection v2 格式的数据,开放 API 文档地址:

https://apifox-openapi.apifox.cn/

API 管理工具迁移:从 Postman 到 Apifox 的最佳实践

具体导入的操作步骤如下:

1、获取 API 访问令牌

在 Apifox 中,点击页面右上角的个人头像,选择「账号设置 -> API 访问令牌」选项,在这里生成一个 API 访问令牌 (access_token) ,该令牌用于身份验证,可根据需要设定令牌有效期。

API 管理工具迁移:从 Postman 到 Apifox 的最佳实践

2、获取项目 ID

在 Apifox 中,选择「项目设置 -> 基本设置」即可查看项目 ID。项目 ID 是每个项目的唯一标识符,在调用 API 时需要用到它,以确保数据导入到正确的项目中。

API 管理工具迁移:从 Postman 到 Apifox 的最佳实践

3、调用开放 API

要将 Postman Collection v2 格式的数据导入到 Apifox 中,可以调用以下接口:

POST https://api.apifox.com/v1/projects/{projectId}/import-postman-collection

通过调用上述接口,可以将数据导入指定项目。下面是相关必需参数的说明:

Path 参数

参数名称参数类型是否必需描述
projectIdString必需项目 ID,用于指定要导入数据的目标项目。

示例:

https://api.apifox.com/v1/projects/3760990/import-postman-collection

Body 参数

参数名称参数类型是否必需描述
inputString必需要导入的字符串化后的 JSON 对象。

请求 Body 示例:

{
  "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-VersionString必需开放 API 版本号,目前支持的版本为 2024-03-28。
AuthorizationObject必需身份认证,格式为 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 文档

常见问题

Postman 中的 Pre-request 脚本,在 Apifox 的哪里?

Pre-request 相当于 Apifox 的「前置操作」,Post-response 相当于 Apifox 的「后置操作」,迁移完成后,你可在对应接口或目录的「前/后置操作」中查看脚本。

API 管理工具迁移:从 Postman 到 Apifox 的最佳实践

Postman 中接口的前置 URL 变量,到哪里去了

在 Postman 中,接口使用变量 (例如{{baseUrl}}) 来存放前置 URL (例如 http://127.0.0.1:8080 。而在 Apifox 中,前置 URL 独立存放于「环境管理」中的「服务」。在进行迁移时,{{baseUrl}} 会自动转换为 Apifox 中的「服务」。这么做是为了避免两者混淆,明确区分变量和前置 URL,更方便进行管理。

API 管理工具迁移:从 Postman 到 Apifox 的最佳实践

在接口发送请求时,只需在页面右上角切换相应的环境,Apifox 就会自动拼接前置 URL。

API 管理工具迁移:从 Postman 到 Apifox 的最佳实践

并且在微服务架构中,在环境里设置了多个前置 URL 时,还可以根据需要在「接口」或「目录」层级指定对应的服务(前置 URL),非常的方便。

API 管理工具迁移:从 Postman 到 Apifox 的最佳实践

通过以上两种方法,可以顺利地将 API 项目从 Postman 迁移到 Apifox。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Jacquelyn38 Jacquelyn38
4年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
PHP创建多级树型结构
<!lang:php<?php$areaarray(array('id'1,'pid'0,'name''中国'),array('id'5,'pid'0,'name''美国'),array('id'2,'pid'1,'name''吉林'),array('id'4,'pid'2,'n
Wesley13 Wesley13
3年前
Java日期时间API系列36
  十二时辰,古代劳动人民把一昼夜划分成十二个时段,每一个时段叫一个时辰。二十四小时和十二时辰对照表:时辰时间24时制子时深夜11:00凌晨01:0023:0001:00丑时上午01:00上午03:0001:0003:00寅时上午03:00上午0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
1年前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
美凌格栋栋酱 美凌格栋栋酱
4个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(