当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。