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


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