我想知道最常用的方法是使用URI
将查询字符串添加到Elixir中的基本URI。
我目前正在做这样的事情:
iex(1)> base = "http://example.com/endpoint"
"http://example.com/endpoint"
iex(2)> query_string = URI.encode_query(foo: "bar")
"foo=bar"
iex(3)> uri_string = URI.parse(base) |> Map.put(:query, query_string) |> URI.to_string
"http://example.com/endpoint?foo=bar"
但是想知道是否有更简洁的方法来设置查询字符串。我知道URI.merge/2
,但我不认为查询字符串是有效的URI,因此这里可能不合适(?
不会被添加)。
我也可以这样做:
uri_string = %URI{ URI.parse(base) | query: query_string } |> URI.to_string
但我想知道我是否错过了更简单或更清晰的方法。
答案 0 :(得分:5)
我认为你的第一个例子,有一些格式,读得很好:
uri_string =
base_url
|> URI.parse()
|> Map.put(:query, URI.encode_query(params))
|> URI.to_string()
我不知道其他习语/捷径。
答案 1 :(得分:2)
我不确定它是否更具惯用性,但如果您知道自己正在尝试构建的字符串,则可以进行简单的字符串插值。
uri_string = "#{base}?#{query_string}"