2016-02-24 2 views
0

Скажем, у меня есть 2 модели ответа A и B. A и B имеют общий вложенный объект C. (т.е. A.C.field1 B.C.field1).Общие объекты модели в моделях ответов интеграции в apigateway

Как я понимаю APIGateway сегодня я должен определить C в определении модели для А, а затем снова B.

Это приводит к двум нежелательным последствиям:

  1. Полностью дублированной схемы JSon (раздражает, но невозможно управлять).

  2. В сгенерированном SDK-объекте (или java) у меня есть два разных класса A.C и B.C. Это дублирование усложняет использование SDK, поскольку две версии C не идентичны.

+0

https://forums.aws.amazon.com/thread.jspa?messageID=697388 Это кажется на месте, но еще не проверено. –

ответ

2

Вы можете определить общий объект модели и ссылаться на него в других моделях с канонической ссылкой.

Предполагая, что вы определили общую модель "C", вы можете обратиться к модели "C" в модели А и В со следующей схемой: JSON

Модель A или B:

{ 
    "$schema": "http://json-schema.org/draft-04/schema#", 
    "type": "object", 
    "properties": { 
    "field": { 
     "$ref": "https://apigateway.amazonaws.com/restapis/{{api-id}}/models/C" 
    } 
    } 
} 

Сформированный SDKs будет иметь общий объект C.

Если ваши общие свойства объектов содержатся в одной модели, вы можете использовать встроенную ссылку вместо:

{ 
    "$schema": "http://json-schema.org/draft-04/schema#", 

    "definitions": { 
    "C": { 
     "type": "object", 
     "properties": { 
     ... 
     } 
    } 
    }, 

    "type": "object", 

    "properties": { 
    "field": { "$ref": "#/definitions/C" }, 
    ... 
    } 
} 
Смежные вопросы