传递 id 数组作为 net/http 的查询参数

Posted

技术标签:

【中文标题】传递 id 数组作为 net/http 的查询参数【英文标题】:Passing array of id's as query parameter of net/http 【发布时间】:2021-12-25 15:41:38 【问题描述】:

我想使用标准 Ruby 客户端 net/http 发出类似的 GET 请求:

stores/?ids=2,24,13

我正在尝试这样做,其中 store_ids 是一个 id 数组,但它不起作用。如果我将单个 id 作为 ids 的参数传递,则响应是正确的。

def get_stores_info
  uri = URI(BASE_URL)
  params =  ids: store_ids, offset: DEFAULT_OFFSET, limit: DEFAULT_LIMIT 
  uri.query = URI.encode_www_form(params)
  response = Net::HTTP.get_response(uri).body
  result = JSON.parse response
end

【问题讨论】:

您希望 id 像这样吗? ids=2,24,13?你是如何在后端处理的?通常,id[]=1&id[]=24&id[]=13 应该在查询字符串中发送,以便 Rails 以... params[:id] = [2,24,13] 的形式获取参数。 我无法控制后端,所以我需要像这样构建请求:ds=2,24,13 【参考方案1】:

您可以将store_ids 转换为字符串:

store_ids = [2,24,13]
params =  ids: store_ids.join(','), offset: 0, limit: 25 

# these are to see that it works.
encoded = URI.encode_www_form(params) # => "ids=%5B2%2C+24%2C+13%5D&offset=0&limit=25"
CGI.unescape(encoded) # => ids=2,24,13&offset=0&limit=25

这是Replit。

【讨论】:

以上是关于传递 id 数组作为 net/http 的查询参数的主要内容,如果未能解决你的问题,请参考以下文章

Rails - 如何将 id 数组作为隐藏字段的参数传递?

如何将数组作为 Laravel 查询生成器的 SELECT 参数传递

我们可以在 PHP 中的任何函数中将数组作为参数传递吗?

使用“IN”命令将数组作为要在 SQL 查询中使用的参数传递

如何将 JSON 数组作为 URL 中的参数传递

传递数组作为参数以返回所有匹配元素的行