golang的net/url包

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

package url

import "net/url"

url包解析URL並實現了查詢的逸碼,參見RFC 3986。

Index

  • func QueryEscape(s string) string
  • func QueryUnescape(s string) (string, error)
  • type Error
    • func (e *Error) Error() string
  • type EscapeError
    • func (e EscapeError) Error() string
  • type URL
    • func Parse(rawurl string) (url *URL, err error)
    • func ParseRequestURI(rawurl string) (url *URL, err error)
    • func (u *URL) IsAbs() bool
    • func (u *URL) Query() Values
    • func (u *URL) RequestURI() string
    • func (u *URL) String() string
    • func (u *URL) Parse(ref string) (*URL, error)
    • func (u *URL) ResolveReference(ref *URL) *URL
  • type Userinfo
    • func User(username string) *Userinfo
    • func UserPassword(username, password string) *Userinfo
    • func (u *Userinfo) Username() string
    • func (u *Userinfo) Password() (string, bool)
    • func (u *Userinfo) String() string
  • type Values
    • func ParseQuery(query string) (m Values, err error)
    • func (v Values) Get(key string) string
    • func (v Values) Set(key, value string)
    • func (v Values) Add(key, value string)
    • func (v Values) Del(key string)
    • func (v Values) Encode() string

Examples

  • URL
  • Values

Package Files

url.go

func QueryEscape

func QueryEscape(s string) string

QueryEscape函數對s進行轉碼使之可以安全的用在URL查詢裡。

func QueryUnescape

func QueryUnescape(s string) (string, error)

QueryUnescape函數用於將QueryEscape轉碼的字串還原。它會把%AB改為位元組0xAB,將'+'改為' '。如果有某個%後面未跟兩個十六進位數字,本函數會返回錯誤。

type Error

type Error struct { Op string URL string Err error }

Error會報告一個錯誤,以及導致該錯誤發生的URL和操作。

func (*Error) Error

func (e *Error) Error() string

type EscapeError

type EscapeError string

func (EscapeError) Error

func (e EscapeError) Error() string

type URL

type URL struct { Scheme string Opaque string // 編碼後的不透明資料 User *Userinfo // 使用者名稱和密碼資訊 Host string // host或host:port Path string RawQuery string // 編碼後的查詢字串,沒有'?' Fragment string // 引用的片段(文檔位置),沒有'#' }

URL類型代表一個解析後的URL(或者說,一個URL參照)。URL基本格式如下:

scheme://[userinfo@]host/path[?query][#fragment]

scheme後不是冒號加雙斜線的URL被解釋為如下格式:

scheme:opaque[?query][#fragment]

注意路徑欄位是以解碼後的格式儲存的,如/%47%6f%2f會變成/Go/。這導致我們無法確定Path欄位中的斜線是來自原始URL還是解碼前的%2f。除非一個用戶端必須使用其他程式/函數來解析原始URL或者重構原始URL,這個區別並不重要。此時,HTTP服務端可以查詢req.RequestURI,而HTTP用戶端可以使用URL{Host: "example.com", Opaque: "//example.com/Go%2f"}代替{Host: "example.com", Path: "/Go/"}。

Example

func Parse

func Parse(rawurl string) (url *URL, err error)

Parse函數解析rawurl為一個URL結構體,rawurl可以是絕對位址,也可以是相對位址。

func ParseRequestURI

func ParseRequestURI(rawurl string) (url *URL, err error)

ParseRequestURI函數解析rawurl為一個URL結構體,本函數會假設rawurl是在一個HTTP請求裡,因此會假設該參數是一個絕對URL或者絕對路徑,並會假設該URL沒有#fragment尾碼。(網頁瀏覽器會在去掉該尾碼後才將網址發送到網頁伺服器)

func (*URL) IsAbs

func (u *URL) IsAbs() bool

函數在URL是絕對URL時才返回真。

func (*URL) Query

func (u *URL) Query() Values

Query方法解析RawQuery欄位並返回其表示的Values類型索引值對。

func (*URL) RequestURI

func (u *URL) RequestURI() string

RequestURI方法返回編碼好的path?query或opaque?query字串,用在HTTP請求裡。

func (*URL) String

func (u *URL) String() string

String將URL重構為一個合法URL字串。

func (*URL) Parse

func (u *URL) Parse(ref string) (*URL, error)

Parse方法以u為上下文來解析一個URL,ref可以是絕對或相對URL。

本方法解析失敗會返回nil, err;否則返回結果和ResolveReference一致。

func (*URL) ResolveReference

func (u *URL) ResolveReference(ref *URL) *URL

本方法根據一個絕對URI將一個URI補全為一個絕對URI,參見RFC 3986 節 5.2。參數ref可以是絕對URI或者相對URI。ResolveReference總是返回一個新的URL執行個體,即使該執行個體和u或者ref完全一樣。如果ref是絕對URI,本方法會忽略參照URI並返回ref的一個拷貝。

type Userinfo

type Userinfo struct { // 內含隱藏或非匯出欄位 }

Userinfo類型是一個URL的使用者名稱和密碼細節的一個不可修改的封裝。一個真實存在的Userinfo值必須保證有使用者名稱(但根據 RFC 2396可以是Null 字元串)以及一個可選的密碼。

func User

func User(username string) *Userinfo

User函數返回一個使用者名稱設定為username的不設定密碼的*Userinfo。

func UserPassword

func UserPassword(username, password string) *Userinfo

UserPassword函數返回一個使用者名稱設定為username、密碼設定為password的*Userinfo。

這個函數應該只用於老式的網站,因為風險很大,不建議使用,參見RFC 2396。

func (*Userinfo) Username

func (u *Userinfo) Username() string

Username方法返回使用者名稱。

func (*Userinfo) Password

func (u *Userinfo) Password() (string, bool)

如果設定了密碼返回密碼和真,否則會返回假。

func (*Userinfo) String

func (u *Userinfo) String() string

String方法返回編碼後的使用者資訊,格式為"username[:password]"。

type Values

type Values map[string][]string

Values將建映射到值的列表。它一般用於查詢的參數和表單的屬性。不同於http.Header這個字典類型,Values的鍵是大小寫敏感的。

Example

func ParseQuery

func ParseQuery(query string) (m Values, err error)

ParseQuery函數解析一個URL編碼的查詢字串,並返回可以表示該查詢的Values類型的字典。本函數總是返回一個包含了所有合法查詢參數的非nil字典,err用來描述解碼時遇到的(如果有)第一個錯誤。

func (Values) Get

func (v Values) Get(key string) string

Get會擷取key對應的值集的第一個值。如果沒有對應key的值集會返回Null 字元串。擷取值集請直接用map。

func (Values) Set

func (v Values) Set(key, value string)

Set方法將key對應的值集設為只有value,它會替換掉已有的值集。

func (Values) Add

func (v Values) Add(key, value string)

Add將value添加到key關聯的值集裡原有的值的後面。

func (Values) Del

func (v Values) Del(key string)

Del刪除key關聯的值集。

func (Values) Encode

func (v Values) Encode() string

Encode方法將v編碼為url編碼格式("bar=baz&foo=quux"),編碼時會以鍵進行排序。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.