2017-11-22 4 views
0

필자와 계약을 맺고 있지만 데이터 모델은 JSONSchemas로 정의됩니다.

내 모델을 만든 후, 난장판 UI로 테스트하고 있습니다. 이제 나는 'oneOf'를 내 참조로 사용하는 데 문제가 있습니다. 다음과 같이 ...

... 
"socio":{ 
      "type":{ 
       "oneOf":[ 
        { 
         "properties":{ 
           "pessoaFisica":{ 
           //"pessoaFisica": "object", 
           "$ref":"http://soa-mds/XXXXXX/apps/SOA/JSONSchemas/Corporativo/pessoaFisica.json" 
          }, 
          "pessoaJuridica":{ 
            //"pessoaJuridica": "object", 
           "$ref":"http://soa-mds/dataprev.gov.br/apps/SOA/JSONSchemas/Corporativo/pessoaJuridica.json" 
          }, 
          "estrangeiro":{ 
           //"estrangeiro": "object", 
           "$ref":"http://soa-mds/XXXXXX/apps/SOA/JSONSchemas/Corporativo/estrangeiro.json" 
          } 
         } 
        }   
       ] 
      } 
     }   
    }, 
.... 

연구 후 $ ref를 사용하여 올바른 방법을 찾지 못했습니다.

아무도 도와 줄 수 있습니까?

감사합니다, MMR Swagger UI result A

+0

'swagger : "2.0"'또는'openapi : 3.0.0'이 맞습니까? 왜 당신은'oneOf'를 특별히 필요로합니까? – Helen

+0

데이터 모델에서 다른 개체 사이의 "선택"을 나타낼 필요가 있습니다. –

답변

2

oneOf에 대한 올바른 구문은 다음과 같습니다

"socio": { 
    "oneOf": [ 
     { 
     "$ref": "http://soa-mds/XXXXXX/apps/SOA/JSONSchemas/Corporativo/pessoaFisica.json" 
     }, 
     { 
     "$ref": "http://soa-mds/dataprev.gov.br/apps/SOA/JSONSchemas/Corporativo/pessoaJuridica.json" 
     }, 
     { 
     "$ref": "http://soa-mds/XXXXXX/apps/SOA/JSONSchemas/Corporativo/estrangeiro.json" 
     } 
    ] 
    } 

당신의 스펙 "openapi": "3.0.0"하지 "swagger": "2.0"을 사용하십시오 ( oneOf는 OpenAPI를 3.0에서 지원됩니다).

모든 참조 된 스키마는 OpenAPI Schema object과 호환되어야합니다. OpenAPI 스키마 개체는 JSON 스키마를 기반으로하지만 OpenAPI의 일부 JSON 스키마 키워드 work differently과 일부 키워드 (예 : idpatternProperties)는 전혀 지원되지 않습니다.