模型管理

1. 模型的简介及限定

模型用于描述HTTP协议的请求数据和响应数据。API网关通过使用JSON Schema定义模型,用来描述用户API约定数据的组织方式,比如参数或者返回值有哪些字段,这些字段的取值范围等。同时,通过定义模型,并在用户创建的API中加以引用,用户在API的SDK导出时,关联的Model会自动生成对应的POJO类。这样可以增强用户传入参数的便利性,同时可以方便用户反序列化返回的数据。

API网关模型定义基于JSON架构草案4的规范,但存在一定的条件限制:1. 仅支持创建元素属性为Object类型的JSON Schema;2. $ref仅支持本用户的内部Model引用。Model的‘ref’引用地址可以通过CreateModel - 创建模型DescribeModels - 获取已创建的模型获取。‘ref’不支持循环引用。

Api网关支持的模型可以参考如下定义:

{
        "required": ["name", "photoUrls"],
        "type": "object",
        "properties": {
                "id": {
                        "format": "int64",
                        "type": "integer"
                },
                "category": {
                        "$ref": "https://apigateway.aliyun.com/models/bbc725be4b0b48b79bdd2f6ebbdcc8c0/a5e7741d8a3a4bcb9746275a0db15fcf"
                },
                "name": {
                        "pattern": "^\\d{3}-\\d{2}-\\d{4}$",
                        "type": "string"
                },
                "status": {
                        "type": "string"
                },
                "dogProject": {
                        "type": "object",
                        "properties": {
                                "id": {
                                        "format": "int64",
                                        "maximum": 100,
                                        "exclusiveMaximum": true,
                                        "type": "integer"
                                },
                                "name": {
                                        "maxLength": 10,
                                        "type": "string"
                                }
                        }
                }
        }
}

2. 创建模型

您可以通过阿里云提供的CreateModel - 创建模型进行模型创建。同样,您也可以通过API网关的控制台进行创建。

模型相关操作的控制台入口

  1. 点击分组管理

  2. 点击模型管理,进入模型管理界面来创建模型

Swagger导入创建模型

Api网关支持通过导入Swagger创建API。Swagger文件中的Model相关内容会在Swagger导入成功后,会在该分组下自动生成模型。注意:通过Swagger导入模型时,同名模型将直接被覆盖,不会进行用户确认

3. 修改和查看模型

完成模型的创建后,可以在模型管理界面点击查看所需的模型。在模型的详情页,可以看到模型的名称,模型的定义,以及系统为其分配的URI。API网关模型间可以通过‘$ref:{URI}’来实现模型间的项目引用。

如果用户希望对当前模型的信息进行修改,可以点击右上角修改按钮完成模型的修改。需要注意的是:模型的URI不随模型的更改发生改变

4. 删除模型

用户可以对分组下的模型进行删除操作。注意:API网关不维护模型和API的关联关系,删除模型时可能会引起线上API的SDK导出失败等问题。因此,删除模型请谨慎操作。