Отправьте вектор с помощью параметра query функции R httr GET - PullRequest
2 голосов
/ 13 июля 2020

Для отправки вектора значений, скажем, массив list_a = c(1,2,3) FastAPI примет URL-адрес в форме:

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

Однако с использованием библиотеки параметр запроса httr в функцию GET необходимо передать список пар ключ / значение. Это означает, что вы не можете иметь одно и то же поле дважды, потому что R явно не примет список с повторяющимися ключами.

Итак, как мне это сделать? Я мог бы создать URL-адрес сам, но проблема в том, что некоторые из моих параметров содержат двойные кавычки ("), которые, похоже, не будут правильно проанализированы, если я помещу их непосредственно в URL-адрес. Однако параметр query, похоже, обрабатывает их правильно.

Есть ли способ получить параметр query в httr GET для создания нескольких одинаковых имен полей?

В качестве альтернативы, как закодировать заранее созданный 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"

1 Ответ

3 голосов
/ 13 июля 2020

Я думаю, что было бы проще построить строку запроса самостоятельно, тогда вы могли бы использовать 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"
...