我正在写一个昂首阔步的合同,但我的数据模型是用JSONSchemas定义的。
创建我的模型后,我在swagger 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的正确方法。
任何人都可以帮助我吗?
答案 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"
(仅{+ 1}}在OpenAPI 3.0中支持。)
所有引用的模式必须与OpenAPI Schema object兼容。虽然OpenAPI模式对象基于JSON模式,OpenAPI中的一些JSON模式关键字work differently和一些关键字(例如oneOf
和id
)根本不受支持。