2017-11-22 6 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でoneOFを使用する正しい方法を見つけません。

誰でも助けてくれますか?

おかげで、 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と一部のキーワード(idおよびpatternPropertiesなど)はサポートされていません。

関連する問題