头图

如何将现有的 Swagger 管理的 API 迁移到 Apifox 呢?本文将为你提供详细的迁移指南,介绍四种主要的方法:

  1. 导出 Swagger 文件并导入到 Apifox
  2. 通过在线链接定时导入
  3. 使用 IDEA 插件一键上传
  4. 通过开放 API 导入

下面详细介绍具体操作。

方法一 导出 Swagger 文件并导入

这是最直接的一种方法,适合于一次性迁移,尤其是当你的 API 文档已经比较稳定时。具体操作步骤如下:

1 导出 Swagger 文件

首先,在 Swagger UI 中,将 API 文档导出为 .yaml 或 .json 文件。通常,可以在 Swagger UI 界面左上角找到源文件,然后进行下载。

图片

如果界面没显示有 URL 链接,可以按「F12」或「Ctrl+Shift+i」打开浏览器控制台,然后定位到「Network -> Fetch/XHR」后刷新整个页面,这时候就会出来一个 .json 文件,你可以将其在新窗口中打开并下载。

图片

2 导入到 Apifox

打开 Apifox,进入项目,依次选择「项目设置 -> 导入数据 -> OpenAPI/Swagger」,上传之前导出的 .yaml 或 .json 文件。如果有源文件 URL 且能在公网访问,也可以通过 URL 的方式来手动导入。

图片

上传文件后,Apifox 会自动解析并导入 API 文档,你可以在预览界面进行进一步的编辑和管理。

图片

方法二 通过在线链接定时导入

如果你的 Swagger API 文档经常更新,手动导出和导入可能会显得繁琐。这时候,你可以利用 Apifox 的在线链接定时导入功能,这个方法可以根据定时时间来同步在线的 Swagger 文档。具体操作步骤如下:

1 获取在线链接

确保你的 Swagger 文档可以通过一个公开的 URL 访问。例如:

https://petstore.swagger.io/v2/swagger.json

2 设置定时导入

在 Apifox 中,进入需要定时导入的项目,依次选择「项目设置 -> 导入数据 -> 定时导入」,在这里添加一个新任务,输入你的在线 Swagger 文档 URL(数据源 URL),并设置导入的时间间隔 (例如,每隔 3 小时、每隔 12 小时等) 。保存设置后,Apifox 会自动根据你设定的时间间隔,定时从该 URL 获取最新的 API 文档并进行更新。

图片

方法三 通过 IDEA 插件一键上传

Apifox 的 IDEA 插件 能识别本地 Java 和 Kotlin 项目的源代码,自动生成 API 文档并同步到 Apifox 项目,它支持 SpringBoot 等常见框架,实现了真正的代码零侵入。

对于集成了 Swagger 的项目来说,结合 Apifox 的 IDEA 插件来使用是一种更高效便捷的方法,该插件能够直接从开发环境中将 API 文档上传到 Apifox,简化了迁移过程。具体操作步骤如下:

1 安装 Apifox IDEA 插件

打开 IntelliJ IDEA (版本号需大于 2019.3) ,点击「Settings -> Plugins」进入插件市场 (Marketplace) ,搜索 “Apifox Helper” 并安装,安装完成后重启 IDEA。

图片

2 配置 API 访问令牌

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

图片

在 IDEA 中打开「Apifox Helper」插件配置,输入 API 访问令牌并点击「测试令牌」,测试成功后,点击「Apply」或「OK」按钮保存配置。

图片

3 同步接口

在项目目录树中,右键点击模块节点并选择「Upload to Apifox」以同步模块内全部接口;或者打开 Controller 文件,右键选择「Upload to Apifox」以同步 Controller 内全部接口。

首次同步时,会弹出一个配置界面,你需要选择相应的团队以及相应的项目,接口将默认上传至该项目的根目录。

图片

4 查看接口文档

同步成功后,打开 Apifox,可在项目中查看自动生成的 API 文档。

图片

关于 IDEA 插件配置的更多知识,可访问 Apifox 官方帮助文档的 IDEA 插件模块

方法四 通过开放 API 导入

Apifox 提供了开放 API,允许开发者通过 API 直接导入 Swagger/OpenAPI 格式的 API 数据,开放 API 文档地址为 https://apifox-openapi.apifox.cn/

图片

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

1 获取 API 访问令牌

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

图片

2 获取项目 ID

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

图片

3 调用开放 API

要将 OpenAPI/Swagger 格式的数据导入到 Apifox 中,可以调用以下接口:

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

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

Path 参数

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

示例:

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

Body 参数

参数名称参数类型是否必需描述
inputString/Object必需要导入的 OpenAPI/Swagger 数据,可以是 JSON/YAML 字符串或被对象包裹的 URL。
optionsObject可选高级选项,可设置目标目录 ID、导入接口的覆盖形式等,其内相关参数可在 Apifox 开放 API 文档中详细查看。

请求 Body 示例:

{

"input": {

"url":"https://petstore.swagger.io/v2/swagger.json"

},

"options": {

"endpointOverwriteBehavior": "CREATE_NEW",

"endpointCaseOverwriteBehavior": "CREATE_NEW",

"updateFolderOfChangedEndpoint": false

}

}

注意,input 参数的值可以是字符串,也可以是一个对象。

如果你直接提供 OpenAPI 数据字符串,可以按以下格式传参,该字符串可以是 JSON、YAML 或 X-YAML 格式的 OpenAPI 数据:

{

"input": "{'openapi':'3.0.0','info':{'title':'Sample API','version':'1.0.0'},'paths':{'/sample':{'get':{'summary':'Sample endpoint','responses':{'200':{'description':'successful operation'}}}}}}"

}

如果你提供一个可在公网访问的 URL 地址,该地址指向 OpenAPI/Swagger 格式的数据,那么可以按以下格式传参:

{

"input": {

"url":"https://petstore.swagger.io/v2/swagger.json"

}

}

如果数据源需要鉴权,还可以提供 basicAuth 信息进行认证:

{

"input": {

"url":"https://petstore.swagger.io/v2/swagger.json",

"basicAuth": {

"username": "apiUser",

"password": "securePassword123"

}

}

}

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": 20,

"endpointUpdated": 0,

"endpointIgnored": 0,

"endpointFailed": 0,

"endpointFolderCreated": 3,

"endpointFolderUpdated": 0,

"endpointFolderIgnored": 0,

"endpointFolderFailed": 0,

"schemaCreated": 0,

"schemaUpdated": 7,

"schemaIgnored": 0,

"schemaFailed": 0,

"schemaFolderCreated": 0,

"schemaFolderUpdated": 0,

"schemaFolderIgnored": 0,

"schemaFolderFailed": 0

}

}

}

5 查看导入结果

导入完成后,可以在 Apifox 对应的项目中查看生成的 API 文档。要了解其它更多详细的入参、响应信息,请参考 Apifox 的开放 API 文档

常见问题

文件导入时报错怎么办?

如下图所示,导入 .yaml 文件时提示解析出错,这说明该文件不符合 OpenAPI 规范,需要修改。

图片

你可以将该文件上传到 https://editor.swagger.io/ 来定位错误,解决完问题后再导入 Apifox。

图片

通过上述四种方法,你可以轻松地将 Swagger 管理的 API 迁移到 Apifox,每种方法都有其适用的场景,你可以根据自己的需求选择最合适的方法。不论是手动导入、在线链接同步、插件上传还是通过开放 API 导入,Apifox 都能提供更高效、更便捷的 API 管理体验。


Apifox
23 声望4 粉丝

Apifox 是 API 文档、API 调试、API Mock、API 自动化测试一体化平台。Apifox = Postman + Swagger + Mock + JMeter