2016-02-24 81 views
0

假設我有2個響應模型A和B.A和B共享一個共同的嵌套對象C.(即A.C.field1 B.C.field1)。穿越集成響應模型的共享模型對象

正如我今天所理解APIGateway我必須在一個模型定義再次B.

定義C,然後

這將導致兩個不良後果:

  1. 完全複製的JSON模式(煩人,但不可能管理)。

  2. 在生成的obj-c(或java)SDK中,我有兩個不同的類A.C和B.C.這種重複使SDK的使用複雜化,因爲兩個版本的C不是同一類型。

+0

https://forums.aws.amazon.com/thread.jspa?messageID=697388這看起來很重要,但尚未對其進行測試。 –

回答

2

您可以定義共享模型對象,並指它在其他車型有標準基準

假設您已經定義的通用模型 「C」,你可以參考模型 「C」 的模式A或B具有以下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" 
    } 
    } 
} 

所生成的軟件開發工具包將具有共同的對象C.

如果您的共享對象屬性都包含於單個模型時,可以使用內聯參考代替:

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

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

    "type": "object", 

    "properties": { 
    "field": { "$ref": "#/definitions/C" }, 
    ... 
    } 
}