如何在Swagger规范中表达“任意JSON”?

14
假设我有一个 REST 服务,可以接受任意 JSON 请求体。如何使用 swagger-spec 对其进行建模?
我考虑过模型对象,但我只能想到将任意 JSON(作为字符串)包装在容器 JSON 对象中,例如{"payload": "{ some JSON object serialized to a string }"},这并不是很有用。
还是说,有其他方法来表达端点可以接收请求体中的任意 JSON 吗?
2个回答

6

将请求的主体负载建模为具有仅"type": "object"架构的参数。然后,Swagger UI编辑器将提示用户使用大型文本区域包含{},他们可以填充JSON对象。

"/endpoint": {
      "post": {
        "parameters": [
          {
            "description": "Arbitrary JSON object payload",
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "type": "object"
            }
          }
        ]
      }

4
Swagger试图在API方面变得确定性,因此您所要求的内容并不直接支持。 我能想到的唯一实现您想要的方法是将"consumes"属性设置为"application/json",并添加一个类型为字符串的“body”参数。理论上,这将说明只发送JSON,但实际上,任何字符串都可以发送。 此外,这可能会破坏某些第三方工具,如果它们在将字符串转换为JSON对象之前尝试将其发送到服务器,则可能会发生错误。

1
虽然有点遗憾,但还是有道理的。 - 2rs2ts

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接