gpt4 book ai didi

swagger - 如何在 swagger 中描述复杂的 json 模型

转载 作者:行者123 更新时间:2023-12-02 04:33:49 25 4
gpt4 key购买 nike

我正在尝试使用 Swagger 来描述我正在构建的 web-api。问题是我不明白如何描述复杂的json对象?

例如,如何描述这个对象:

{
name: "Jhon",
address: [
{
type: "home",
line1: "1st street"
},
{
type: "office",
line1: "2nd street"
}
]
}

最佳答案

好的,根据上面的评论,您需要以下架构:

{
"definitions": {
"user": {
"type": "object",
"required": [ "name" ],
"properties": {
"name": {
"type": "string"
},
"address": {
"type": "array",
"items": {
"$ref": "#/definitions/address"
}
}
}
},
"address": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [ "home", "office" ]
},
"line1": {
"type": "string"
}
}
}
}
}

我做了一些假设,使示例变得更复杂一些,以便将来有所帮助。对于“用户”对象,我声明“名称”字段是强制性的。例如,如果您还需要强制提供地址,则可以将定义更改为“required”:[“name”,“address”]。

我们基本上使用 json-schema 的子集来描述模型。当然不是每个人都知道它,但是学习和使用它相当简单。

对于地址类型,您可以看到我还将限制设置为两个选项 - 家庭或办公室。您可以向该列表添加任何内容,或者完全删除“枚举”以消除该限制。

当属性的“type”为“array”时,需要在其后面加上“items”来声明数组的内部类型。在本例中,我引用了另一个定义,但该定义也可以是内联的。通常这种方式更容易维护,特别是当您需要单独或在其他模型中定义“地址”时。

根据要求,内联版本:

{
"definitions": {
"user": {
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string"
},
"address": {
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"home",
"office"
]
},
"line1": {
"type": "string"
}
}
}
}
}
}
}
}

关于swagger - 如何在 swagger 中描述复杂的 json 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26206685/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com