入力と出力の両方として、文字列キーでインデックス付けされたオブジェクトのマップを使用する API を Swagger で文書化する必要があります。
例:
{
"a_property": {
"foo": {
"property_1": "a string 1",
"property_2": "a string 2"
},
"bar": {
"property_1": "a string 3",
"property_2": "a string 4"
}
}
}
"foo" と "bar" は任意の文字列キーにすることができますが、一連のキーの中で一意である必要があります。
Swagger を使用してオブジェクトの配列を定義できることはわかっていますが、次のようなものがあるため、これは別の API を提供します。
{
"a_property": [
{
"key": "foo"
"property_1": "a string 1",
"property_2": "a string 2"
},
{
"key": "bar"
"property_1": "a string 3",
"property_2": "a string 4"
}
]
}
「Open API 仕様」 - 「Map データ型のサポートの追加 #38」ページを読みました。私が理解している限り、additionalProperties を使用することをお勧めしますが、それは私のニーズに応えていないようです(または、私が使用している Swagger UI 2.1.4 では動作しません)。私は何か見落としてますか?
これまでのところ、次の回避策を見つけました(Swagger JSONで):
a_property: {
description: "This is a map that can contain several objects indexed by different keys.",
type: object,
properties: {
key: {
description: "map item",
type: "object",
properties: {
property_1: {
description: "first property",
type: string
},
property_2: {
description: "second property",
type: string
}
}
}
}
}
これでほぼ問題は解決しますが、読者は「キー」が任意の文字列であり、何度も繰り返される可能性があることを理解する必要があります。
必要なものを達成するためのより良い方法はありますか?