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


Elixir URI.parse用法及代码示例


Elixir语言中 URI.parse 相关用法介绍如下。

用法:

parse(uri)
@spec parse(t() | binary()) :: t()

将 URI 解析为其组件,无需进一步验证。

此函数可以解析绝对和相对 URL。您可以通过检查 scheme 字段是否为 nil 来检查 URI 是绝对的还是相对的。此外,此函数要求绝对和相对 URI 格式正确,并且不执行任何验证。请参阅下面的"Examples" 部分。如果您想要更严格的验证,请使用 new/1

当给定一个没有端口的 URI 时, URI.default_port/1 为 URI 的方案返回的值将用于 :port 字段。该方案也被规范化为小写。

如果给这个函数一个 %URI{} 结构,这个函数会原封不动地返回它。

注意:此函数设置字段:权限是出于向后兼容性的原因,但已弃用。

例子

iex> URI.parse("https://elixir-lang.org/")
%URI{
  authority: "elixir-lang.org",
  fragment: nil,
  host: "elixir-lang.org",
  path: "/",
  port: 443,
  query: nil,
  scheme: "https",
  userinfo: nil
}

iex> URI.parse("//elixir-lang.org/")
%URI{
  authority: "elixir-lang.org",
  fragment: nil,
  host: "elixir-lang.org",
  path: "/",
  port: nil,
  query: nil,
  scheme: nil,
  userinfo: nil
}

iex> URI.parse("/foo/bar")
%URI{
  authority: nil,
  fragment: nil,
  host: nil,
  path: "/foo/bar",
  port: nil,
  query: nil,
  scheme: nil,
  userinfo: nil
}

iex> URI.parse("foo/bar")
%URI{
  authority: nil,
  fragment: nil,
  host: nil,
  path: "foo/bar",
  port: nil,
  query: nil,
  scheme: nil,
  userinfo: nil
}

URI.new/1 相比,此函数将解析 poorly-formed URI,例如:

iex> URI.parse("/invalid_greater_than_in_path/>")
%URI{
  authority: nil,
  fragment: nil,
  host: nil,
  path: "/invalid_greater_than_in_path/>",
  port: nil,
  query: nil,
  scheme: nil,
  userinfo: nil
}

另一个示例是查询字符串中带有方括号的 URI。它被 parse/1 接受,但会被 new/1 拒绝:

iex> URI.parse("/?foo[bar]=baz")
%URI{
  authority: nil,
  fragment: nil,
  host: nil,
  path: "/",
  port: nil,
  query: "foo[bar]=baz",
  scheme: nil,
  userinfo: nil
}

相关用法


注:本文由纯净天空筛选整理自elixir-lang.org大神的英文原创作品 URI.parse(uri)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。