Para enviar un vector de valores, digamos una matriz list_a = c(1,2,3)
FastAPI aceptará una URL de la forma:
https://wherever.com/endpoint?list_a=1&list_a=2&list_a=3
Sin embargo, al usar el parámetro de consulta de la biblioteca httr para la función GET, debe pasar una lista de pares clave/valor. Esto significa que no puede tener el mismo campo dos veces porque R obviamente no aceptará una lista con claves duplicadas.
Entonces, ¿cómo hago esto? Podría construir la URL yo mismo, pero el problema con eso es que algunos de mis parámetros tienen comillas dobles ( "
) en ellos que no parecen analizarse correctamente si los coloco directamente en la URL. El parámetro de query
parece manejar estos correctamente sin embargo.
¿Hay alguna forma de obtener el parámetro de query
de GET
de httr para crear varios nombres de campo idénticos?
Alternativamente, ¿cómo codifico una URL creada previamente que tiene comillas dobles como la que se muestra a continuación para que no provoque que FastAPI proporcione un error 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"
Creo que sería más fácil crear la cadena de consulta usted mismo, luego podría usar URLencode
en el resultado:
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"