假设我有2个响应模型A和B.A和B共享一个共同的嵌套对象C.(即A.C.field1 B.C.field1)。
据我了解APIGateway今天,我必须在A的模型定义中定义C,然后再为B.
这会导致两种不良后果:
完全重复的json架构(烦人但不可能无法管理)。
在生成的obj-c(或java)SDK中,我有两个不同的类A.C和B.C.这种复制使得SDK的使用变得复杂,因为C的两个版本的类型不同。
答案 0 :(得分:2)
您可以定义共享模型对象,并使用规范参考在其他模型中引用它。
假设您已经定义了一个共同模型" C",您可以参考模型" C"在具有以下JSON模式的模型A或B中:
模型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" },
...
}
}