Swagger:<字符串,对象> 的映射

2023-12-09

我需要使用 Swagger 记录一个 API,该 API 使用对象映射作为输入和输出,并通过字符串键进行索引。

Example:

{
    "a_property": {
        "foo": {
            "property_1": "a string 1",
            "property_2": "a string 2"
        },
        "bar": {
            "property_1": "a string 3",
            "property_2": "a string 4"
        }
    }
}

“foo”和“bar”可以是任何字符串键,但它们在键集中应该是唯一的。

我知道,使用 Swagger,我可以定义一个对象数组,但这提供了不同的 API,因为这样我们就会得到如下内容:

{
    "a_property": [
        {
            "key": "foo"
            "property_1": "a string 1",
            "property_2": "a string 2"
        },
        {
            "key": "bar"
            "property_1": "a string 3",
            "property_2": "a string 4"
        }
    ]
}

我已阅读“开放 API 规范”-“添加对地图数据类型 #38 的支持”页。据我了解,建议使用extraProperties,但它似乎不能满足我的需求(或者它不适用于我使用的 Swagger UI 2.1.4)。我错过了什么?

到目前为止,我找到了以下解决方法(在 Swagger JSON 中):

a_property: {
    description: "This is a map that can contain several objects indexed by different keys.",
    type: object,
    properties: {
        key: {
            description: "map item",
            type: "object",
            properties: {
                property_1: {
                    description: "first property",
                    type: string
                },
                property_2: {
                    description: "second property",
                    type: string
                }
            }
        }
    }
}

这几乎完成了工作,但是读者必须理解“key”可以是任何字符串,并且可以重复多次。

有更好的方法来实现我所需要的吗?


Using additionalProperties是使用 OpenAPI (fka.Swagger) 规范描述 hashmap 的正确方法,但 Swagger UI 目前不渲染它们。

该问题已在此处跟踪https://github.com/swagger-api/swagger-ui/issues/1248

同时你可以使用这个技巧:定义一个非必需的属性(default在下面的示例中)相同类型的地图对象并在描述中给出一些提示:

swagger: "2.0"
info:
  version: 1.0.0
  title: Hashmap
  
paths: {}

definitions:
  MapItem:
    properties:
      firstname:
        type: string
      lastname:
        type: string
  Map:
    description: a (key, MapItem) map. `default`is an example key
    properties:
      default:
        $ref: '#/definitions/MapItem'
    additionalProperties:
      $ref: '#/definitions/MapItem'

此描述不会修改 API 契约并改进文档。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Swagger:<字符串,对象> 的映射 的相关文章

随机推荐

  • 尝试发送 Android 图像时应用程序崩溃

    我在尝试将图像从我的应用程序发送到服务器时遇到问题 我知道它在哪里崩溃 这些是我的文件 RestClient java package edu gvsu cis masl camerademo import android util Log
  • 嵌套跨度上未禁用 CSS 直通

    CSS ol margin 0 30px li margin 15px 0 li done text decoration line through li done span text decoration none background
  • 使用“$CI_JOB_TOKEN”“包含”私有项目文件

    到目前为止我得到的是 可以通过以下方式进行身份验证Personal Access Token and include外部 CI 脚本 但更简洁的方法是使用 CI JOB TOKEN因为它更安全 更受限制 我正在研究是否可以通过这种方式完成
  • 多个 dropzone.js - 单页

    不是在单个 dropzone 元素上上传多个文件 是否可以在单个页面上拥有多个 dropzone 元素 当有多个元素时 选择对话框后似乎 dropzone 甚至不会触发 每个元素都初始化了自己的 dropzone 使用 dropzone 的
  • 为什么 jest.spyOn() 有时不能在 Vue 组件的方法上工作?

    我看到该方法作为事件处理程序所做的更改 但是jest spyOn wrapper vm methodName 在主要情况下无法接听电话 但在某些测试中它以某种方式起作用 我怀疑可能会重新渲染 也许是因为options论证中mount 调用
  • maven 和 jboss 模块

    我是 Maven 和 jboss 的新手 所以我试图从它们之间的合作中受益 我在 Eclipse 中有一个 Maven 项目 该项目有许多依赖项 在运行时我想将它们作为 jboss 的模块提供 否则我的 EAR 将非常大 我还使用 Nexu
  • 如何在 MVC 3 中关闭客户端验证?

    我有一个客户端验证框架 我更喜欢使用它 而不是 ASP NET MVC 3 附带的现有框架 有谁知道如何在 MVC 3 中禁用它 我已经尝试过以下方法 HtmlHelper ClientValidationEnabled false Htm
  • 如何根据用户区域设置 Dygraphs 图例中的日期和时间格式

    我有一个图表 显示设备随时间的功率输出 我想格式化图例 以便它以当前用户所在位置的样式显示时间戳 例如 在美国 它会显示MM DD YY h m s am pm 并且在欧盟会显示DD MM YYYY HH MM SS ETC 目前 它是默认
  • 无法显示 HTML + SVG

    我以前用过JEditorPane 但只能显示HTML 不能显示SVG 嵌套SVG HTML也不能完整显示 然后我用JSVGCanvas 但只能显示SVG 不能显示HTML 有什么办法可以解决这个问题吗 配置JEditorPane使用JSVG
  • 我无法将 ComboBox 停靠在 TableLayoutPanel 单元格中

    请看下图 我想对接一个组合框我的 TableLayoutPanel 的单元格中的控件 组合框Dock属性设置为Fill和Anchor财产给上 下 左 右 TL DR 这是预期的行为 对于ComboBox环境Dock to Fill没有填满容
  • Spring @RequestMapping“不包含”正则表达式

    我有这个请求映射 RequestMapping value route to destination from departure html method RequestMethod GET RequestMethod HEAD 我想添加
  • C++ 中没有定义的类声明

    我对 C 没有太多经验 我对 Qt 文档中的以下几行有疑问 http qt project org doc qt 4 8 mainwindows application mainwindow h html 顶部注释后的第 4 6 行 cla
  • 如何显示 HTTP 401 基本身份验证对话框

    I am new to web development I have Android application that hosts some web pages using HTTPServer I am using Netty to de
  • python setup.py install 忽略 install_requires

    我无法使用安装本地软件包setup py 这是项目结构 my project lib local1 local1 1 0 whl index html local2 local2 1 0 whl index html setup py se
  • 如何使 HTML 有序列表的文本居中而不是数字标签居中

    我正在为页面创建一个小部件 以相反的顺序列出步骤 我计划用一个ol并设置value个人的属性li标签强制编号ol被逆转 到目前为止 一切都很好 然而 我有一个设计难题 我不确定可以用 css 解决 有了这个标记 是否可以将文本居中但保持标签
  • core-plot iOS 反转 Y 轴

    我想使用 core plot 来显示水深图 实时更新 但我不知道如何反转 Y 轴 以便 X 轴 代表时域 位于顶部我的 UIView 和 Y 轴以正值向底部增长 EDIT 如果我能像这样画轴那就更好了 X轴是时间 Y 轴从 0 到 X X
  • 如何在 Javascript 中获取 pdf 中选定的文本?

    我正在编写一个 Chrome 扩展来操作 pdf 文件 所以我想获取 pdf 中选定的文本 我怎样才能做到这一点 像这样的东西 您可以使用内部未记录的命令内置 PDF 查看器 以下是内容脚本的示例 function getPdfSelect
  • 如何判断两个向量之间的角度是外角还是内角?

    我知道如何找出两个向量之间的角度 但它总是给我内角 但我希望它总是给我逆时针方向的角度 即使它大于 180 度 我正在使用 C 但这并不重要 因为我需要了解理论 This is what I am using now 您正在寻找atan2
  • 使用 Powershell 自动执行 IE 确认提示

    我有一个很好的 powershell 脚本 可以为我女儿自动创建一个特定的网站 最近他们更改了网站并添加了一个不错的新功能 可以将我的脚本速度提高 10 倍 问题是他们用来激活此功能的输入类型会弹出一个确认对话框 HTML 看起来像这样
  • Swagger:<字符串,对象> 的映射

    我需要使用 Swagger 记录一个 API 该 API 使用对象映射作为输入和输出 并通过字符串键进行索引 Example a property foo property 1 a string 1 property 2 a string