2013-04-16 40 views
9

Modeller bölümünde HashMap veya Genel Nesne türü tanımlamanın bir yolu var mı? Ürünleri iade eden bir REST hizmetim var ve bu ürünler farklı seçeneklere sahip olabilir. Options özelliği temelde bir HashMap'dir, burada id seçenek seçeneğidir ve değeri seçenek değeridir.Swagger HashMap özellik türü

+0

Swagger'ın hangi lezzeti kullanıyorsunuz? (jax-rs, play, vb) – Eyal

+0

@Eyal: Swagger-ui kullanıyoruz ve aynı problemi yaşıyoruz. Bir çözümünüz veya çözümünüz var mı? –

+0

@JanHartung Hayır, api'mızda çok fazla haritamız yok ... [abone özelliği izleme sistemindeki bu özellik isteğine abone olmak isteyebilirsiniz.] (Https://github.com/wordnik/swagger- core/issues/244) – Eyal

cevap

6

Evet, mümkün.

  • anahtar her zaman bir dizedir ve tanımlanması gerekmez: OpenAPI yılında

    (. Fka Swagger) 2.0 ve 3.0, bir HashMap daima <string, something> haritasıdır.

  • Değer türü, istediğiniz ve additionalProperties ile tanımlanmıştır.

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

    gelen OpenAPI 2.0 tanım olacaktır:

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

    OpenAPI 3.0'da tanım olacaktır:

Diyelim ki böyle bir <string, string> hashmap tarif etmek istediğimizi varsayalım

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

01 Bu

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

gibi bir <string, object> HashMap OpenAPI 2.0'da bu şekilde tanımlanacak:

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

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

ve OpenAPI içinde 3.0:

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

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

Sadece derinlemesine bu örtülü ettik part 4 of my OpenAPI (fka Swagger tutorial).

OpenAPI (fka. Swagger) specification explains briefly this too.

+0

Bu, yararlıdır ve değerlerin veri yapısının ComplexObject türünün tamamı olması durumunda çalışır. Bununla birlikte, değerlerin yapısının anahtarın modeline bağlı olarak değiştiği bir senaryom var. JSON Şeması'nda, bunu patternProperties kullanarak kolayca ifade edebilirim. OAS/Swagger'da bunu nasıl ifade edebileceğine dair herhangi bir düşünce var mı? –

+0

Swagger 2.0 kullanıyorum. > 'u almak istiyorum. Bu tür bir yanıtı nasıl alabiliriz? – Prabhath