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

通过UI将数组传递给Swagger块参数

廖弘伟
2023-03-14

是否可以使用UI将项目数组传递到swagger块中的单个参数中?我在ruby\rails应用程序中使用它。请求类型是GET。

我有一个接受许多参数的搜索 API。所有这些都是单一值,但一个设施除外。它接受一个项目数组,并且可以使用类似于下面显示的 URL 进行调用(下面的示例显示了传递的两个值 1 和 2)。

http://localhost:3000/api/venues/search.json?facilities%5B%5D=1&facilities%5B%5D=2

我的参数是这样设置的:

# INDEX (API)
swagger_path '/venues.json' do
  operation :get do
    parameter do
      key :name, :facilities
      key :in, :query
      key :description, 'Facilities.  This does not work.'
      key :type, :array
      key :required, false
    end
  end
end

当我在swagger中传递数组作为参数时,EG[1]会生成以下URL来调用API:

http://localhost:3000/api/venues/search?facilities=%5B1%5D

Swagger似乎把“[1]”翻译成了URI“[1]”,并把它作为参数的值,这是我希望它做的。我希望,因为我将它设置为一种“数组”类型,它知道每次为数组的每个元素设置参数名为“facilities[]”。

我想我遗漏了数组的一些定义,但找不到任何关于招摇块的文档。

我看过一篇帖子,有人传递了一个逗号分隔的字符串,然后让API创建一个数组来解决这个问题。

我所有的单值参数请求都按预期工作。

感谢任何帮助或建议。提前感谢。

共有1个答案

邹丰羽
2023-03-14

Swagger UI是对您放入其中的值进行URL编码的,因为使用了一些不支持的字符(“[”和“]”)。当url中的字符被评估为不是URL中的本地字符时,它将被编码并发送到web服务器,web服务器通常会对其进行解码并将其传递给您正在使用的任何管道。有效字符的列表可以在这里找到。

似乎您正在尝试重现帖子正文如何处理数组。由于 url 编码问题,这可能会导致一些问题。您是否尝试过执行以下操作来指定数组?

  • 示例:GET/products?项目=1

一些web服务器和管道将其视为一个数组,当您试图访问“项目”时,它会返回1、2、3和4。

 类似资料:
  • 问题内容: 我正在尝试将字符串数组作为POST数据传递给PHP脚本,但是不确定该怎么做。 这是到目前为止我执行PHP脚本的代码: 我试图传递数组的地方: 调用PHP脚本: 以及相关的PHP脚本: 有任何想法吗?谢谢 ! 编辑 我正在尝试以下方法,但仍不满意: 这就是我所有的“错误报告” … 问题答案: 要将查询字符串中的数组传递给php,您应该添加到标识符并将每个项目都添加为单独的条目,因此这样的

  • 问题内容: 我想在PHP中操纵JavaScript数组。可以做这样的事情吗? 活动是一维数组,例如: 尝试此脚本时无法完成…如何解决? 问题答案: 而已!现在您可以在PHP中访问它:

  • 问题内容: 我使用此javascript捕获flexigrid中选中的所有复选框,然后尝试将此行ID数组发送到CFC 低于CFC 当我尝试运行此函数时,我的服务器回答说,传递给removeCertidaoCRC函数的NUMSEQCERTIDAO参数不是数组类型。 我最近刚进入的一个延迟项目中的所有选项都用光了。 问题答案: jQuery可以很好地将数组分开发送,但是ColdFusion不能很好地处

  • 问题内容: 我想将两个数组形式的java发送到oracle存储过程。第一个数组是字符串数组,第二个是字符数组,我怎样才能做到这一点? 问题答案: 这是一个如何做的例子。 以下脚本在数据库中设置表,类型和存储过程。该过程采用数组类型的参数,并将数组的每一行插入表中: 然后,Java代码演示如何将数组传递到此存储过程中: 如果先运行SQL脚本,然后运行Java类,然后查询表,则应该发现所有数据都已插入

  • 问题内容: 这是我的config.json: 这是我的bash命令: 输出: 因此$ PRJNAME是prj1,但是第一次调用仅输出。 有人能帮我吗? 问题答案: 您的示例中的jq程序实际上会尝试查找名为的键。请尝试以下操作:

  • 问题内容: 是否可以将参数传递给filter函数,以便您可以按任何名称进行过滤? 就像是 问题答案: 实际上,还有另一种(也许是更好的解决方案),您可以使用angular的本机“过滤器”过滤器,并且仍将参数传递给自定义过滤器。 考虑以下代码: 要进行此工作,您只需将过滤器定义如下: 如您在这里看到的,weDontLike实际上返回另一个函数,该函数的范围内有您的参数以及来自过滤器的原始项。 我花了