Swagger 2.0中的嵌套查询参数

时间:2016-08-11 13:59:29

标签: ruby-on-rails swagger swagger-ui swagger-2.0

我正在使用Swagger 2.0记录Rails应用程序,并使用Swagger-UI作为人类可读的文档/沙箱解决方案。

我有一个资源,客户端可以存储任意元数据以便稍后查询。根据Rails约定,查询将如下提交:

/posts?metadata[thing1]=abc&metadata[thing2]=def

哪个Rails转换为:

的参数
{ "metadata" => { "thing1" => "abc", "thing2" => "def" } }

可以很容易地用于为数据库生成适当的WHERE子句。

在Swagger中是否支持此类内容?我想最终让Swagger-UI给出一些修改生成的请求以添加metadata命名空间下的任意参数的方法。

1 个答案:

答案 0 :(得分:0)

此问题似乎尚未得到支持(在您问了问题2年后),但是有关在OpenAPI github repo上对此添加支持的讨论和公开票正在进行中。他们将这种类型的嵌套称为deepObjects

还有一个未解决的问题,其中尝试实施here。但是,使用最新的稳定swagger-ui版本,我已经观察到它按预期运行:

    "parameters": [
      {
        "name": "page[number]",
        "in": "query",
        "type": "integer",
        "default": 1,
        "required": false
      },
      {
        "name": "page[size]",
        "in": "query",
        "type": "integer",
        "default": 25,
        "required": false
      }

这将显示预期的对话框,并且可以与Try it out一起在正常工作的服务器上使用。

enter image description here

我认为没有一种指定任意值或选择值(例如枚举)的好方法,因此您可能必须为每个嵌套选项添加参数。