Как я могу ссылаться на одну модель из другой модели с помощью aws API Gateway


Скажем, у меня есть модель:

"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>
      }
    }
  }
}

Как я могу ссылаться на модель Pet в моей модели человека?

С развязностью я смог сказать:

"$ref": "#/definitions/Pet"

Но API Gateway, похоже, не позволяет этого.

1 3

1 ответ:

Если вы имеете в виду эталонную модель вне 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 gateway не поддерживает ответ "default", поэтому, если вы пытаетесь импортировать вышеупомянутый petstore.JSON пример, вам нужно удалите поля "по умолчанию".