是否可以使用UI将项数组传递到swagger块中的单个参数?我正在使用ruby \ rails应用程序。请求的类型是GET。通过UI将数组传递给Swagger块参数
我有一个搜索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
当我传递数组作为招摇的参数,EG [1]它生成以下URL调用API:
http://localhost:3000/api/venues/search?facilities=%5B1%5D
Swagger似乎将“[1]”转换为URI“%5B1%5D”,并将其作为我期望它做的参数的值。我希望,因为我将它设置为一种“数组”,它将知道每次为阵列的每个元素都将参数名称设置为“facilities%5B%5D”。
我想我错过了数组的一些定义,但无法找到任何文档上的swagger块,可以提供帮助。
我看过一篇文章,其中有人传递了逗号分隔的字符串,然后让API创建一个数组来解决这个问题。
我所有的单值参数请求都按预期工作。
感谢任何帮助或建议。提前致谢。
我试图将它们拆分出来,就像你在做但不起作用。当API收到值时,它只保留其中一个参数。例如。 .../api/venues/search.json?facilities = 19&facilities = 18当我查询API接收的参数时,它只使用最后一个值: => {“facilities”=>“18”,“format”=> “json”,“action”=>“search”,“controller”=>“api/v1/venues”} –
嗯。那么,我个人使用的另一个技巧是传递参数的逗号分隔列表。我不确定这是否你愿意考虑,但只要你传递的数组是一个原始类型(即不是JSON对象或类似的东西),它应该像冠军一样工作。例如:GET /api/venues/search.json?facilities=18,19。然后在你的代码中,你需要把它分解成一个数组来处理它。 –
我曾考虑过,作为一种选择,是的。改变代码以适应这一点也不需要太多。知道未来是否有可能是有用的,如果不是,那么我至少可以改变我编写我的API的方式来将它考虑进去。我可能会深入研究背后的代码,看看我能否研究如何它处理数组,因为那里可能有些东西有帮助。只需要一个空闲的时间去做,这是一个棘手的部分; o)感谢您花时间回复杰罗德。我会暂时解决这个问题,因为这个建议是一个解决方法。 –