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


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)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。