使用 oneOf 和 $ref 为 Swagger 合约定义 JSONschem

Mar*_*iro 1 jsonschema swagger swagger-ui

我正在编写一个 swagger 合约,但我的数据模型是使用 JSONSchemas 定义的。

\n\n

创建模型后,我正在 swagger UI 中测试它们。现在我在使用“oneOf”作为参考时遇到问题。如下...

\n\n
...\n "socio":{\n            "type":{\n                "oneOf":[\n                    {\n                        "properties":{\n                               "pessoaFisica":{\n                                //"pessoaFisica": "object",\n                                "$ref":"http://soa-mds/XXXXXX/apps/SOA/JSONSchemas/Corporativo/pessoaFisica.json"\n                            },\n                            "pessoaJuridica":{   \n                                  //"pessoaJuridica": "object",\n                                "$ref":"http://soa-mds/dataprev.gov.br/apps/SOA/JSONSchemas/Corporativo/pessoaJuridica.json"\n                            },\n                            "estrangeiro":{\n                                //"estrangeiro": "object",\n                                "$ref":"http://soa-mds/XXXXXX/apps/SOA/JSONSchemas/Corporativo/estrangeiro.json"\n                            }\n                        }\n                    }         \n                ]   \n            }\n        }         \n    },\n....\n
Run Code Online (Sandbox Code Playgroud)\n\n

经过研究,我没有找到\xc2\xb4t 找到将 oneOF 与 $​​ref 一起使用的正确方法。

\n\n

谁能帮我?

\n\n

谢谢,\nMMR\nSwagger UI 结果 A

\n

Hel*_*len 7

正确的语法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"
      }
    ]
  }
Run Code Online (Sandbox Code Playgroud)

确保您的规范使用"openapi": "3.0.0"而不是"swagger": "2.0"oneOf仅在 OpenAPI 3.0 中受支持)。

所有引用的架构必须与 OpenAPI Schema 对象兼容。虽然 OpenAPI Schema 对象基于 JSON Schema,但某些 JSON Schema 关键字在 OpenAPI 中的工作方式不同,并且根本不支持某些关键字(例如id和)。patternProperties