导入数据模型

更新时间:

为了方便用户快速生成数据模型,API 网关支持通过 Proto 文件和 Swagger 文件来快速导入数据模型。

操作步骤

  1. 登录 API 网关控制台。

  2. 在左侧导航栏单击 API 发布数据模型,进入数据模型页面。

  3. 在页面右上角单击 导入数据模型,在弹出的窗口中配置数据模型信息

    • 选择导入类型:API 网关提供Swagger 和 ProtoBuf 两种数据模型的导入,您可以根据实际业务需求进行选择。

      • Swagger 模型:Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。

      • ProtoBuf 模型:ProtoBuf 是一个开源的结构化信息传递工具,用于数据存储、传输协议格式等场景。

    • 导入方式:

      • URL:输入swagger配置的 URL地址,将远程的数据模型解析后,上传至 API 网关平台。

      • FILE:选择好导入类型后,单击 上传文件,将swagger的 2.0 版本 或 3.0 版本的 json yaml 文件,上传至 API 网关平台。

  • 性能优化:

    说明
    • 导入类型为 ProtoBuf,Swagger 时,都无需输入模型名称。

    • API 网关会从 Swagger 2.0 文件中的 Model 或 Swagger 文件 3.0 中的 Schema 解析参数名称,参数结构,参数类型并转换后导入数据模型,可直接在 API 中自动生成示例入参的 JSON,数据模型也可直接在流程编排中进行参数配置,参数映射等。

  • 完成后单击 确定,完成数据模型的导入。

数据模型导入成功后,后续在创建 API 配置请求/响应参数时,您可以直接选择对应的数据模型进行绑定。

其他操作

生成 SDK

为了方便您调用 API 接口,同时为了避免重复编写接口代码,API 网关提供下载 SDK 的操作,简化编写代码的同时,满足您对外输出 SDK 的需求。

说明

目前 API 网关支持从 分组应用 两个维度下载 SDK,以下操作步骤以 分组 角度为例。

  1. 登录 API 网关控制台。

  2. 在左侧导航栏单击 API 发布 > API 分组,进入 API 分组页面。

  3. 在分组列表右侧单击 下载 SDK

  4. 在分组详情页配置下载 SDK 的信息。

    • 包名:必填,用于生成类的包名。

    • 代码语言:选择下载 SDK 的代码语言,目前仅支持 java。

  5. 完成后单击 下载,完成 SDK 的生成。

    说明

    下载后的 SDK 形式为 zip文件,您可以将 zip 包里面的 Java 类文件导入对应项目中用于 SDK 的调用。

注意事项

网关 SDK 生成不支持的数据类型

  • 容器类型不能多层嵌套。

  • List 或 Map 必须有泛型信息。

  • List 或 Map 的泛型信息不能是 Array 类型。

  • 不支持单字节(字节数据 byte[] 是支持的。)

  • 不支持对象数组,请用 List 代替。

  • 属性名不能是 datadescription,会与 iOS 的属性冲突。

  • Map 类型的 key 必须是 String 类型。

  • Map 类型的 value 不能是 Object 类型。

  • 类型不能是抽象类。

  • 类型不能是接口类。

错误的写法为:

public class Req {
    private Map<String,List<Person>> map; //容器类型不能多层嵌套。
    private List<Map<Person>> list; //容器类型不能多层嵌套。
    private List list1; //List或Map必须有泛型信息。
    private Map map1; //List或Map必须有泛型信息。
    private List<Person[]> listArray; //List或Map的泛型信息不能是Array类型。
    private byte b; //不能为单字节
    private Person[] personArray; //不支持对象数组,请用List代替
    private String description; //属性名不能description
}

网关 SDK 生成支持的数据类型

boolean, double, float, int, long, short
java.lang.Boolean
java.lang.Double
java.lang.Float
java.lang.Integer
java.lang.Long
java.lang.Short
java.lang.String
java.util.List,但:必须使用类型参数;不能使用其具体子类 以下简称List
java.util.Map,但:必须使用类型参数;不能使用其具体子类;key类型必须是String 以下简称Map
Enum
byte[]

正确的写法为:

public class Req {
    private String s = "ss";
    private int i;
    private double d;
    private Long l;
    private long l1;
    private boolean b;
    private List<String> stringList;
    private List<Person> personList;
    private Map<String,Person> map;
    private byte[] bytes;
    private EnumType type;
}

public class Person {
    private String name;
    private int age;
}