re: fetch поддерживает параметры запроса в виде
request("https://example.com/api",
~queryParams=[
("param1", "value1"),
("param2", "value2")
])
|> fetch;
или
request("https://example.com/api")
|> Request.param("param1", "value1")
|> Request.param("param2", "value2")
|> fetch;
Однако остерегайтесь того, что библиотека является экспериментальной.В качестве альтернативы, вы могли бы просто провести код построителя запросов , который хотя бы чуть-чуть был проверен в бою (в реализации @ monssef есть небольшая ошибка, когда есть пустой список, и он также не делаетправильная кодировка):
[@bs.val] external encodeURIComponent : string => string = "";
let _buildUrl = (url, params) => {
let encodeParam = ((key, value)) =>
encodeURIComponent(key) ++ "=" ++ encodeURIComponent(value);
let params =
params |> List.map(encodeParam)
|> String.joinWith("&");
switch params {
| "" => url
| _ => {j|$url?$params|j}
};
};