当前位置: 首页 > 知识库问答 >
问题:

如何用swagger描述复杂json模型

池砚文
2023-03-14

我试图用Swagger来描述我正在构建的web-api。问题是我无法理解如何描述复杂的json对象?

比如如何描述这个对象:

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

共有1个答案

邢晗日
2023-03-14

好的,根据上面的注释,您需要以下模式:

{
  "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"
            }
        }
    }
  }
}

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

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

{
  "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"
              }
            }
          }
        }
      }
    }
  }
}
 类似资料:
  • 我有一个Web Api 2项目,它有一个HttpGet方法,该方法将复杂对象的列表作为参数。像这样: 我用swashbuckle来设置我的swagger文档。但是它像这样设置这个参数: 至少对象似乎需要一些东西。 后来在定义部分我确实发现了这一点: 但它似乎没有被使用... 有没有办法设置它,让swagger理解这是一个对象列表,并给我一种为各个属性输入值的方法?(就像我对不是列表的复杂对象所做的

  • 我正在尝试为我的API添加Swagger文档,它使用Microsoft Web API框架。 例如,传递 GeoPoint (Lat/Lon) 对象的数组,Web API 期望从查询字符串绑定的复杂类型数组具有以下格式。 这是有效的。 我的问题是:是否可以在Swagger JSON文档中记录此集合格式和数组类型? 我想相关的规范在这里,http://swagger.io/specification

  • 是否可以使用带有swagger的模板。它是如何完成的。 我不想每次都重复三个属性time、len和off。 看看这篇文章的结尾,我在那里制作了一个“模板”来解释。 更多详情: 我有一个JSON响应结构,它总是返回一个具有相同属性的JSON,但是只有数据的内容会发生变化。 数据可以是数组,可以是字符串、数字、null或对象<这取决于Api的函数处理。 请参阅本文末尾的Swagger定义示例。它是一个

  • 我正在尝试大摇大摆地记录我的 API,该 API 由泽西Spring 2.22.2 与Spring 4.3 和杰克逊 2.22.2 组成。 我使用的swagger软件包是: endpoint声明之一: 这就是此endpoint生成的 JSON 的样子: 当我试图在swagger编辑器中解析这个输出时,它会返回错误,我认为原因可能是在“paramas”name参数中,它创建了它的对象类型而不是模式。

  • 我想格式化我的Swagger API描述,使它们不是简单的文本段落。最好是,我想在其中添加一个小表格。 我没有在Swagger描述中找到有关文本格式的在线参考。如果我启动Swagger编辑器,并打开Instagram示例(File \ Open Example \ Instagram.yaml),我看到yaml文件中的第一个描述显示了一些格式,包括超链接和边界框: 这看起来像标准的Markdown

  • 是否可以通过 Swagger 描述 Websocket server api? 我们通过websocket服务器广播事件,我想通过一个swagger规范文件来描述它们。 是否有用于WebSocket的文档生成器?