2013-04-16 2 views
9

HashMap 또는 Generic Object 형식을 모델 섹션에서 정의 할 수있는 방법이 있습니까? 제품을 반품하는 REST 서비스가 있으며 제품에 다른 옵션이있을 수 있습니다. options 프라퍼티는 기본적으로 HashMap이다. id는 옵션 이름이고 그 값은 옵션 값이다.Swagger HashMap 속성 형식

+0

Swagger의 맛은 무엇입니까? (jax-rs, play, etc.) – Eyal

+0

@Eyal : 우리는 swagger-ui를 사용하고 있으며 같은 문제가 있습니다. 해결책이나 해결 방법이 있습니까? –

+0

@JanHartung 아니요, API에 맵이 너무 많지 않습니다. [이슈 추적 시스템에서이 기능 요청]을 구독하고 싶을 수도 있습니다. (https://github.com/wordnik/swagger- core/issues/244) – Eyal

답변

6

예 가능합니다.

  • 열쇠는 항상 문자열이고 정의 할 필요가 없습니다 OpenAPI를에서

    (. FKA 자신감은) 2.0 및 3.0, 해시 맵은 항상 <string, something> 맵입니다.

  • 값 유형은 원하는 값이며 additionalProperties으로 정의됩니다.

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

    대응하는 OpenAPI를 2.0 정의됩니다 :

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

    는 OpenAPI를 3.0에서 정의가 될 것입니다 :

의 당신이 하나의 같은 <string, string> 해시 맵을 설명하고 싶은 말은하자

01 이

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

같은 235, <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

나는 2.0을 사용하고 있습니다. >을 얻고 싶습니다. 어떻게 이러한 유형의 응답을받을 수 있습니까? – Prabhath