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


Elixir URI.new用法及代码示例


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

用法:

new(uri)
(从 1.13.0 开始)
@spec new(t() | String.t()) :: {:ok, t()} | {:error, String.t()}

从 URI 或字符串创建新的 URI 结构。

如果给出 %URI{} 结构,则返回 {:ok, uri} 。如果给出一个字符串,它将解析并验证它。如果字符串有效,则返回 {:ok, uri} ,否则返回带有 URI 无效部分的 {:error, part}。如需在没有进一步验证的情况下解析 URI,请参阅 parse/1

此函数可以解析绝对和相对 URL。您可以通过检查scheme 字段是否为nil 来检查URI 是绝对的还是相对的。

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

例子

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

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

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

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

iex> URI.new("//[fe80::]/")
{:ok, %URI{
  fragment: nil,
  host: "fe80::",
  path: "/",
  port: nil,
  query: nil,
  scheme: nil,
  userinfo: nil
}}

iex> URI.new("https:?query")
{:ok, %URI{
  fragment: nil,
  host: nil,
  path: nil,
  port: 443,
  query: "query",
  scheme: "https",
  userinfo: nil
}}

iex> URI.new("/invalid_greater_than_in_path/>")
{:error, ">"}

给出一个现有的 URI 只是返回它包装在一个元组中:

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

相关用法


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