2013-04-16 8 views
9

モデルセクションにHashMapまたは汎用オブジェクトタイプを定義する方法はありますか? 私は製品を返すRESTサービスを持っており、それらの製品には異なるオプションがあります。 optionsプロパティは基本的にHashMapです。ここで、idはオプション名で、その値はオプション値です。Swagger HashMapプロパティタイプ

+0

あなたはSwaggerのフレーバーを使用していますか? (jax-rs、playなど) – Eyal

+0

@Eyal:私たちはswagger-uiを使用していて、同じ問題があります。解決策または回避策がありますか? –

+0

@JanHartungいいえ、GoogleのAPIにマップがあまりにも多いわけではありません。[迷惑な問題追跡システムでこの機能リクエストを購読したいと思うかもしれません。](https://github.com/wordnik/swagger- core/issues/244) – Eyal

答えて

6

はい、可能です。 OpenAPIので

(。FKA SWAGGER)2.0および3.0、ハッシュマップは常に<string, something>マップです:

  • キーは常に文字列であると定義する必要はありません。
  • 値の種類は任意で、additionalPropertiesで定義されています。

のは、あなたがこのいずれかのよう<string, string>ハッシュマップを記述したいとしましょう:

{ 
    "key1": "value1", 
    "key2": "value2" 
} 

対応OpenAPIの2.0定義は次のようになります。OpenAPIを3.0に

definitions: 
    StringStringMap: 
    type: object 
    additionalProperties: 
     type: string 

の定義は次のようになります。

components: 
    schemas: 
    StringStringMap: 
     type: object 
     additionalProperties: 
     type: string 

01この

{ 
    "key1": {"someData": "data", "someOtherData": true}, 
    "key2": {"someData": "data2", "someOtherData": false} 
} 

よう <string, object>ハッシュマップは、OpenAPIを2.0にこのように定義されます。

definitions: 
    ComplexObject: 
    type: object 
    properties: 
     someData: 
     type: string 
     someOtherData: 
     type: boolean 

    StringObjectMap: 
    type: object 
    additionalProperties: 
     $ref: "#/definitions/ComplexObject" 

とOpenAPIの3.0で:

components: 
    schemas: 
    ComplexObject: 
     type: object 
     properties: 
     someData: 
      type: string 
     someOtherData: 
      type: boolean 

    StringObjectMap: 
     type: object 
     additionalProperties: 
     $ref: "#/definitions/ComplexObject" 

私は深さでこれを単に紹介してきましたpart 4 of my OpenAPI (fka Swagger tutorial)にあります。

OpenAPI (fka. Swagger) specification explains briefly this too

+0

これは便利です。値のデータ構造がすべてComplexObject型の場合に有効です。しかし、キーのパターンによって値の構造が異なるシナリオがあります。 JSONスキーマでは、これをpatternPropertiesを使用して簡単に表現できます。 OAS/Swaggerでこれをどのように表現するかについての考えはありますか? –

+0

私はswagger 2.0を使用しています。私は>を取得したいと思います。このタイプの応答はどのように入手できますか? – Prabhath

関連する問題