2014-12-22 36 views
39

Herhangi biri, swaggger sürüm 2.0'daki Model sekmesinde olası 'enum' değerlerini tanımlayabildi mi? Örnek burada: http://petstore.swagger.wordnik.com/#!/pet/addPet, 'status' özelliği için bir enum seçeneğine sahiptir, ancak bu örnek, swagger sürüm 1.0'ı kullanmaktadır (JSON nesnesinde tanımlanan swagger sürümüne göre). 2.0 sürümünde aynı şeyi başarmayı denedim ama şans yok, bunun için belgelerin doğruluğundan emin değilim.Enum swagger.io dilinde nasıl tanımlanır?

Bu konuda herhangi bir ipucu var mı?

cevap

57

"enum" sadece bu gibi çalışır:

 { 
     "in": "query", 
     "name": "sample", 
     "description": "a sample parameter with an enum value", 
     "type": "string", 
     "enum": [ "1", "2"], 
     "required": true 
     } 

Gördüğünüz gibi, orada dize türünde sample adında bir sorgu parametresi, ve iki olası değerleri belirten bir enum vardır. Bu durumda, örnek parametrenin gerekli olduğunu bildirir, böylece UI bir seçenek olarak boş bir değer göstermez. Eğer javascript (örneğin spec için) bir değişken bildirebilirsiniz,

{ 
    "swagger": "2.0", 
    "info": { 
    "title": "title", 
    "description": "descriptor", 
    "version": "0.1" 
    }, 
    "paths": { 
    "/sample": { 
     "post": { 
     "description": "sample", 
     "parameters": [ 
      { 
      "in": "query", 
      "name": "sample", 
      "description": "a sample parameter with an enum value", 
      "type": "string", 
      "enum": [ 
       "1", 
       "2" 
      ], 
      "required": true 
      } 
     ], 
     "responses": { 
      "200": { 
      "description": "Successful request." 
      } 
     } 
     } 
    } 
    } 
} 

yerel olarak test etmek ve SwaggerUi nesnesine geçmek:

minimal Çalışma örnek için, bu deneyin.

var spec = { ... }; 

    window.swaggerUi = new SwaggerUi({ 
    url: url, 
    spec: spec, 
    dom_id: "swagger-ui-container", 
    supportedSubmitMethods: ['get', 'post', 'put', 'delete'], 
    onComplete: function(swaggerApi, swaggerUi){ 
    ... 

url parametre

bu durumda dikkate alınmayacaktır.

Sonunda, çıkış şuna benzer:

enter image description here

ben iyi bu şekilde yapmak başardı, ancak her onu açılan yarattı params için aşağıda ekli resme görebileceğiniz gibi: enter image description here

Elde etmek istediğim, parametre için listelenen kullanılabilir enumlar ile aşağıdaki resimde olduğu gibi güzel Model/Model Şeması sekmeleridir.

enter image description here

+0

Merhaba WEBRON. Önerin için teşekkürler. Bununla bir neşem yok ... Ne denediğime bakmayın, yine de söz konusu örnekte addPet için 'status' durumundaki olası tüm dizelerle o güzel çıktıyı alamıyorum. Bu demo json'a göre aynı JSON şemasını izlediğimden - http://petstore.swagger.wordnik.com/v2/swagger.json - durumu çevrimiçi demo olarak aynı sonucu elde etmek için Pet tanımını nasıl değiştirmeliyim? – eloleon

+0

Kullanılacak UI'nin hangi sürümü kullanılıyor? Test ettiğimde iyi çalıştı. – Ron

+0

Sürüm 2.0.47 sürümünü kullanıyorum ve bu örnekte json'u değiştirmeye çalışıyorum: https://github.com/swagger-api/swagger-ui/tree/master/dist. Bu json değiştirebilirseniz: http://petstore.swagger.wordnik.com/v2/swagger.json ve çevrimiçi bir yere fırlatırsanız bunu takdir ediyorum – eloleon

-1

Bu çalışması gerekir: Bu Swagger son sürümünde mümkün mü

{ 
    "name": "bookingType", 
    "in": "path", 
    "type": "array", 
    "items": { 
     "enum": [ 
      "packages", "accommodations" 
     ] 
    }, 
    "description": "lorem ipsum" 
} 

Referans https://github.com/swagger-api/swagger-spec/blob/master/versions/2.0.md#itemsObject

+3

Bu aslında geçerli bir tanım değil. "Items" nesnesi *, geçerli olması için "type" özelliğine sahip olması * durumundadır. Örneğinizde '' type ':' string ''uygun olacaktır. – Ron

0

Bu kesin cevap değil, ama kadar sizin için işe yarayabilecek Bu işlevselliği eklerler.

Basitçe Kişisel ModelSchema {} gösterecektir böylece

"MyObject":{ 
    "properties":{ 
     "MyEnum":{ 
     "type":"Value1 or Value2 or Value3" 
     } 
    } 
} 

gibi mal beyanında, ancak Modeli YAML sözdizimi ile bu Güncellenmesi MyEnum(Value1 or Value2 or Value3, optional)

12

gösterecektir:

in: query 
name: sample 
description: a sample parameter with an enum value 
type: string 
enum: 
    - 1 
    - 2 
required: true