使用 R httr GET 函数的“查询”参数发送向量

Send a vector using the R httr GET function's `query` parameter

对于发送值向量,例如数组 list_a = c(1,2,3) FastAPI 将接受以下形式的 URL:

https://wherever.com/endpoint?list_a=1&list_a=2&list_a=3

然而,将库 httr's query parameter 用于 GET 函数,您必须传递 key/value 对的列表。这意味着您不能两次拥有相同的字段,因为 R 显然不会接受具有重复键的列表。

那我该怎么做呢?我可以自己构建 URL,但问题是我的一些参数中有双引号 ("),如果我将它们直接放入 url。然而,query 参数似乎确实可以正确处理这些问题。

有什么方法可以获取httr的GETquery参数来创建多个相同的字段名吗?

或者,我如何对预创建的 URL 进行编码,其中包含双引号,如下所示,这样它就不会导致 FastAPI 在 HTTP 错误时给出?

"query/Crude/?actual_table_name=live.crude&report_id=xxxxxxx&fields=IMO&where={\"Barrels\":{\"gt\":1},\"conjunction\":\"\"}&where={\"Load Date\":{\"gt\":\"'2000-01-01'\"},\"conjunction\":\"\"}&offset=1e+05&limit=10000"

我认为自己构建查询字符串最简单,然后您可以在结果上使用 URLencode:

url <- "query/Crude/?actual_table_name=live.crude&report_id=xxxxxxx&fields=IMO&where={\"Barrels\":{\"gt\":1},\"conjunction\":\"\"}&where={\"Load Date\":{\"gt\":\"'2000-01-01'\"},\"conjunction\":\"\"}&offset=1e+05&limit=10000"
URLencode(url)
#> [1] "query/Crude/?actual_table_name=live.crude&report_id=xxxxxxx&fields=IMO&where=%7B%22Barrels%22:%7B%22gt%22:1%7D,%22conjunction%22:%22%22%7D&where=%7B%22Load%20Date%22:%7B%22gt%22:%22'2000-01-01'%22%7D,%22conjunction%22:%22%22%7D&offset=1e+05&limit=10000"