【Elixir】URIクエリパラメータを作る
【Elixir】URIクエリパラメータを作る
Elixir でURIクエリパラメータを作るメモ
環境
- Elixir 1.14.2
Elixir の URI.encode_query
ElixirにはURIモジュールがあり、URLを操作するための機能を提供しています。その中でも、URI.encode_query/1は、クエリパラメータをエンコードするために便利なメソッドです。
URI.encode_query とは URI.encode_query/1は、キーと値のペアから構成されるマップを受け取り、URLエンコードされた文字列を返します。
このエンコードは、クエリストリングの形式でURLに付与するために使用されます。
query = URI.encode_query(%{foo: "bar", baz: "qux"})
IO.puts(query)
# 返り値
# "foo=bar&baz=qux"
上記の例では、foo と baz の2つのキーとそれぞれに対応する値が含まれたマップを渡しています。
このマップは、foo=bar&baz=qux という文字列に変換されています。
注意点
URI.encode_query/1 は、URLエンコードされた文字列を返しますが、クエリパラメータの生成には URI.encode_query/1 だけでは不十分な場合があります。
たとえば、クエリストリングに含める値がURLエンコードされている場合は、それを再度エンコードする必要があります。
query = URI.encode_query(%{foo: "https://example.com"})
IO.puts(query)
# 返り値
# "foo=https%3A%2F%2Fexample.com"
上記の例では、fooの値がURLエンコードされた文字列であるため、URI.encode_query/1 によって再度エンコードされています。
URI.encode_query/1 は、ElixirのURIモジュールで提供される機能の一つであり、クエリパラメータをエンコードするために便利なメソッドです。
ただし、注意点として、URLエンコードされた文字列を再度エンコードする必要があることがあります。