Swagger 文件自动导入 Apifox 后出现目录重复的问题如何解决

Swagger 文件自动导入 Apifox 后出现目录重复的问题如何解决

假如你的 Apifox 项目中原本存在这样的目录结构。

Apifox 目录结构

随着后续接口的增多,你可能需要将某些目录组织在一起,然后在 Apifox 中新增了一个目录后,变成了这样的结构。

Apifox 更改目录结构

但是,后续通过定时的方式自动导入 Swagger 文件到这个项目的时候,你可能会惊讶为什么petstore 这两个目录又新增了一遍,为什么不直接覆盖并更新到aa目录下呢?

Apifox 自动导入 Swagger 文件

出现这种情况是因为,你仅在 Apifox 中变动了目录结构,但是你本地项目的代码层面没有变动,所以它还会按照你本地的 Swagger 配置来生成目录。


也就是说,你需要在你的本地代码里用 Swagger 注解来配置相关的目录结构,以确保与在 Apifox 中变动的目录结构保持同步,这样才能避免问题。


我们来举一个简单的例子来说明一下怎么配置。


我们以 Swagger Petstore 开源项目为例,讲述 Swagger 文件自动导入 Apifox 后出现目录重复的问题该如何解决。

步骤 1:下载 Swagger 文件

打开 Swagger Petstore 开源项目,点击swagger.json文件,鼠标右键,将其存到电脑本地,如下图所示。

下载 Swagger 文件
下载 Swagger 文件

步骤 2:将 Swagger 文件导入 Apifox

打开 Apifox,创建一个项目后,选择“项目设置->导入数据->OpenAPI/Swagger->文件导入”,将上一个步骤已导出的 Swagger 格式的 JSON 文件导入即可。

将 Swagger 文件导入 Apifox

导入之后你会看到生成了这样的目录结构。

Swagger 文件导入 Apifox

步骤 3:更改目录结构

我们随便新建一个目录,姑且就先叫它aa吧,然后将petstore这两个目录置于其下。

Apifox 更改目录结构

步骤 4:同步本地更改

当后续的 Swagger 文件导入更新的时候如果想要保持上一步的目录结构,需要在本地也做同步配置,比如在第一步的 Swagger 文件中,你需要做以下更改(在实际项目中配置 Swagger 注解):

Swagger tags 的更改
tags 的更改
Swagger tags 的更改
接口所属的目录更改
Swagger tags 的更改

当然我们在实际的项目当中不可能一个个在 Swagger 文件里改的,我们一般都会在项目代码里配置相关的 Swagger 注解,由注解来帮我们生成对应的目录结构。


对应上述的 Swagger JSON,你可以使用 Springfox 库中的注解。以下是一个简单的 Java 类的示例,使用 Springfox 的注解来描述相似的 Swagger 文档:

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;

@Api(tags = {"aa/pet", "aa/store", "user"})
public class PetStoreController {

    @ApiOperation(value = "Everything about your Pets")
    @ApiResponses(value = {
            @ApiResponse(code = 200, message = "Success"),
            @ApiResponse(code = 400, message = "Bad Request"),
            @ApiResponse(code = 404, message = "Not Found")
    })
    public void petEndpoint() {
        // Implementation of the pet endpoint
    }

    //......其它操作
}

在上述代码中,@Api 注解用于定义标签,每个标签对应于 Swagger 中的一个 tag@ApiOperation 用于描述每个具体的 API 操作,而 @ApiResponses 用于定义可能的响应。

步骤 5:再次导入

Swagger 文件更改完成后,我们再次导入到项目中,如下图所示,在预览阶段,Apifox 就自动按照 Swagger 配置的注解生成了对应的目录结构,选择“覆盖已有接口”,就可以实现更新接口的目的。

Apifox 导入更新后的Swagger 文件
Apifox 导入更新后的Swagger 文件


更多相关的功能你可以访问 Apifox 官方帮助文档的导入/导出模块

知识扩展:

订阅
qrcode

订阅

随时随地获取 Apifox 最新动态