當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Elixir URI.encode_query用法及代碼示例

Elixir語言中 URI.encode_query 相關用法介紹如下。

用法:

encode_query(enumerable, encoding \\ :www_form)
@spec encode_query(Enum.t(), :rfc3986 | :www_form) :: binary()

使用 encodingenumerable 編碼為查詢字符串。

采用枚舉為二元素元組列表(例如,映射或關鍵字列表)的枚舉,並以 key1=value1&key2=value2... 的形式返回字符串。

鍵和值可以是實現 String.Chars 協議的任何術語,但明確禁止的列表除外。

您可以指定以下 encoding 策略之一:

  • :www_form -(默認,自 v1.12.0 起)鍵和值按照 encode_www_form/1 進行 URL 編碼。這是瀏覽器通常用於查詢字符串和表單數據的格式。它將" "編碼為"+"。

  • :rfc3986 -(從 v1.12.0 開始)與 :www_form 相同,隻是它根據 RFC 3986 將 " " 編碼為 "%20"。如果您在非瀏覽器情況下進行編碼,這是最好的選擇,因為將空格編碼為 "+" 對於 URI 解析器可能會產生歧義。這可能會無意中導致空格被解釋為文字加號。

為了向後兼容,編碼默認為:www_form

例子

iex> query = %{"foo" => 1, "bar" => 2}
iex> URI.encode_query(query)
"bar=2&foo=1"

iex> query = %{"key" => "value with spaces"}
iex> URI.encode_query(query)
"key=value+with+spaces"

iex> query = %{"key" => "value with spaces"}
iex> URI.encode_query(query, :rfc3986)
"key=value%20with%20spaces"

iex> URI.encode_query(%{key: [:a, :list]})
** (ArgumentError) encode_query/2 values cannot be lists, got: [:a, :list]

相關用法


注:本文由純淨天空篩選整理自elixir-lang.org大神的英文原創作品 URI.encode_query(enumerable, encoding \\ :www_form)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。