2017-10-03 5 views
3

私が記述しようとしているAPIには、ルートオブジェクトが任意の数の子オブジェクト(オブジェクト自体のプロパティ)を含むことができる構造があります。ルートオブジェクト内の「キー」またはプロパティは、子オブジェクトの一意の識別子であり、値は子オブジェクトのデータの残りの部分です。`map`オブジェクトのプロパティ名にOpenAPI 3(Swagger)仕様書を書くには?

{ 
    "child1": { ... bunch of stuff ... }, 
    "child2": { ... bunch of stuff ... }, 
    ... 
} 

これは、同様の配列、例えばとしてモデル化することができます、それは構造的にあまり明確何識別プロパティがあると暗黙的ではなく、明示的な子供のIDの中で一意になります両方

[ 
    { "id": "child1", ... bunch of stuff ... }, 
    { "id": "child2", ... bunch of stuff ... }, 
    ... 
] 

が、この私たちはオブジェクトやマップを使いたいと思っています。

私はModel with Map/Dictionary PropertiesのSwaggerドキュメントを見てきましたが、それは私の使用事例に適するものではありません。何か書く:

Swagger rendering of API

これが十分プロパティの値の記述性を伝えるが、どのように私は制限が「キーのあるものを文書化します:

"Parent": { 
    "additionalProperties": { 
    "$ref": "#/components/schemas/Child", 
    } 

すると、このような何かを生み出します"オブジェクト内に?理想的には、「それはちょうど任意の文字列ではなく、それは子供に対応するIDです」というようなことを言いたいと思います。これはどんな方法でもサポートされていますか?

+0

関連:[動的キー値ハッシュマップを使用した複雑な応答モデル](https://stackoverflow.com/q/41097913/113116)、[名前付き要素を持つ配列のスガッガーモデル](https:// stackoverflow。 com/q/27860912/113116)、[Swaggerエディタ辞書パラメータ定義](https://stackoverflow.com/q/41867499/113116) – Helen

+1

このGitHubの問題は、https://github.com/OAI/OpenAPIと少し関係しています。 - 仕様/問題/ 687 – user2152081

答えて

0

あなたの例は正しいです。

どのようにオブジェクトの「キー」に対する制限が文書化されていますか?理想的には、「それはちょうど任意の文字列ではなく、それは子供に対応するIDです」というようなことを言いたいと思います。これはどんな方法でもサポートされていますか?

OpenAPIでは、キーが文字列であると想定していますが、キーの内容/形式を制限する方法はありません。モデル番号descriptionでは、制限事項や詳細を口頭で文書化することができます。スキーマの例を追加すると、マップの外観を示すのに役立ちます。

"Parent": { 
    "additionalProperties": { 
    "$ref": "#/components/schemas/Child", 
    }, 
    "description": "A map of `Child` schemas, where the keys are IDs that correspond to the child", 
    "example": { 
    "child1": { ... bunch of stuff ... }, 
    "child2": { ... bunch of stuff ... }, 
    } 

キーの形式を定義することが可能になるスキーマでsupport for patternPropertiesを追加するための提案は、もあります。しかし、OpenAPI 3.0.0以降、まだ提案段階にあります。

+0

もっと一般的には、この質問は「マップ内のキーとして文字列に/からシリアル化可能な型を使用するにはどうすればよいのでしょうか」と思います。それはOpenAPIでサポートされていない動作だと思う。 – user2152081

+0

@ user2152081:これはおそらく、仕様を生成/処理するツールに依存します。 – Helen

関連する問題