在 apigateway 中跨集成响应模型共享模型对象
Shared model objects across integration response models in apigateway
假设我有 2 个响应模型 A 和 B。A 和 B 共享一个共同的嵌套对象 C。(即 A.C.field1 B.C.field1)。
根据我今天对 APIGateway 的理解,我必须在 A 的模型定义中定义 C,然后再为 B 定义 C。
这会导致两种不良结果:
完全重复 json 架构(烦人但并非无法管理)。
在生成的 obj-c(或 java)SDK 中,我有两个不同的 类 A.C 和 B.C。这种重复使 SDK 的使用变得复杂,因为两个版本的 C 不是同一类型。
您可以定义共享模型对象并在其他模型中使用规范引用引用它。
假设您已经定义了一个通用模型 "C",您可以使用以下 JSON 架构在模型 A 或 B 中引用模型 "C":
模型 A 或 B:
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"field": {
"$ref": "https://apigateway.amazonaws.com/restapis/{{api-id}}/models/C"
}
}
}
生成的SDK会有一个共同的对象C。
如果您的共享对象属性包含在单个模型中,您可以改用内联引用:
{
"$schema": "http://json-schema.org/draft-04/schema#",
"definitions": {
"C": {
"type": "object",
"properties": {
...
}
}
},
"type": "object",
"properties": {
"field": { "$ref": "#/definitions/C" },
...
}
}
假设我有 2 个响应模型 A 和 B。A 和 B 共享一个共同的嵌套对象 C。(即 A.C.field1 B.C.field1)。
根据我今天对 APIGateway 的理解,我必须在 A 的模型定义中定义 C,然后再为 B 定义 C。
这会导致两种不良结果:
完全重复 json 架构(烦人但并非无法管理)。
在生成的 obj-c(或 java)SDK 中,我有两个不同的 类 A.C 和 B.C。这种重复使 SDK 的使用变得复杂,因为两个版本的 C 不是同一类型。
您可以定义共享模型对象并在其他模型中使用规范引用引用它。
假设您已经定义了一个通用模型 "C",您可以使用以下 JSON 架构在模型 A 或 B 中引用模型 "C":
模型 A 或 B:
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"field": {
"$ref": "https://apigateway.amazonaws.com/restapis/{{api-id}}/models/C"
}
}
}
生成的SDK会有一个共同的对象C。
如果您的共享对象属性包含在单个模型中,您可以改用内联引用:
{
"$schema": "http://json-schema.org/draft-04/schema#",
"definitions": {
"C": {
"type": "object",
"properties": {
...
}
}
},
"type": "object",
"properties": {
"field": { "$ref": "#/definitions/C" },
...
}
}