2014-12-22 2 views
39

누구든지 swaggger 버전 2.0의 모델 탭에서 가능한 'enum'값을 정의 할 수 있습니까? 예 : http://petstore.swagger.wordnik.com/#!/pet/addPet에는 'status'속성에 대한 enum 옵션이 있지만이 예에서는 JSON 객체에 정의 된 swagger 버전에 따라 swagger 버전 1.0을 사용하고 있습니다. 버전 2.0에서도 동일한 결과를 얻으려고했지만 행운은 없었습니다. 설명서가 정확한지는 확실하지 않습니다.swagger.io에서 enum을 정의하는 방법은 무엇입니까?

여기에 대한 힌트가 있습니까?

답변

57

은 "열거는"단지 다음과 같이 작동

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

당신이 볼 수 있듯이,이 String 형의 sample라는 쿼리 매개 변수, 그리고 두 가지 값을 명시 열거 있습니다. 이 경우 샘플에서는 매개 변수가 필요하므로 UI는 옵션으로 빈 값을 표시하지 않습니다. 당신이 당신의 자바 스크립트 (예 spec에 대한) 변수를 선언 할 수

{ 
    "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." 
      } 
     } 
     } 
    } 
    } 
} 

가 로컬로 테스트하기 위해, 그리고 SwaggerUi 객체에 전달할 :

최소한의 작업 예제의 경우,이 시도.

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 매개 변수가 무시됩니다.

결국, 결과는 다음과 같다 :

enter image description here

나는 괜찮 이런 식으로 할 수 있었다, 그러나 당신은 각이 드롭 다운 만든 PARAMS은 아래 첨부 된 이미지를 볼 수 있습니다 : enter image description here

내가 달성하고 싶은 것은 멋지다. Model/Model Schema 탭은 아래 그림에서 사용 가능한 enum이 매개 변수에 대해 나열되어 있습니다.

enter image description here

+0

안녕 webron을. 귀하의 제안에 감사드립니다. 아직도 그걸로 아무 기쁨도 ... 내가 뭘하려고해도, 나는 여전히 질문에 언급 된 예제에서 addPet에 대한 '상태'에서 가능한 모든 문자열로 좋은 출력을 얻을 수 없습니다. 본 데모 json - http://petstore.swagger.wordnik.com/v2/swagger와 동일한 JSON 스키마를 따르고 있습니다.json - 온라인 데모와 동일한 결과를 얻으려면 상태에 대한 Pet 정의를 어떻게 수정해야합니까? – eloleon

+0

어떤 버전의 UI를 사용해야합니까? 내가 그것을 테스트했을 때, 그것은 잘 동작했다. – Ron

+0

버전 2.0.47 버전을 사용 중이며이 예제에서 json을 수정하려고합니다 : https://github.com/swagger-api/swagger-ui/tree/master/dist. 이 json을 수정할 수 있다면 http://petstore.swagger.wordnik.com/v2/swagger.json 그리고 온라인 어딘가에 던져 주시면 고맙겠습니다 – eloleon

-1

이 작동합니다 : :이 자신감의 최신 버전에서 가능한

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

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

+3

사실 그것은 유효한 정의가 아닙니다. "items"객체 *는 "type"속성이 유효해야합니다. 귀하의 예에서''type ":"string "'이 맞을 것입니다. – Ron

0

를이 정확한 답은 아니지만, 때까지 당신을 위해 작동하지 않을 수 있습니다 그들은이 기능을 추가합니다.

단순히 ModelSchema가 {}을 보여줍니다 그래서

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

같은 속성을 선언하지만,이 모델은 YAML의 구문이 업데이트 MyEnum(Value1 or Value2 or Value3, optional)

12

표시됩니다 :

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