说我有一个模特:
"Pet":{
"type": "object"
"properties": {
"name":{"type":"integer"},
"age":{"type":"integer"}
}
}
另一种模式:
"Human":{
"type": "object"
"properties": {
"name":{"type":"integer"},
"age":{"type":"integer"},
"pets":{
"type":"array"
"items": {
<This is where my question is>
}
}
}
}
如何在人体模型中引用宠物模型?
随着招摇,我能够说:
"$ref": "#/definitions/Pet"
但API Gateway似乎不允许这样做。
答案 0 :(得分:4)
如果您指的是swagger之外的参考模型,您可以通过使用下面的绝对URL指定模型来实现这一点
{"type":"array","items":{"$ref":"https://apigateway.amazonaws.com/restapis/<rest_api_id>/models/Pet"}}
对于swagger,这个来自open api规范的例子展示了如何在swagger中引用模型 - https://github.com/OAI/OpenAPI-Specification/blob/master/examples/v2.0/json/petstore.json
"Pets": {
"type": "array",
"items": {
"$ref": "#/definitions/Pet"
}
请注意,api网关不支持“默认”响应,因此如果您尝试导入上述petstore.json示例,则需要删除“默认”字段。
答案 1 :(得分:0)
如果您只想要单个值(而不是数组),则可以这样做:
..
"properties": {
"id": {
"$ref": "https://apigateway.amazonaws.com/restapis/abcd1234/models/UserId"
},
..
(如果这可以是相对URL而不是绝对URL,那就太好了,但是我还没有提到如何做到这一点)