golang的net/url包

package url

import "net/url" html

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

Index

Examples

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和操做。 ui

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 // hosthost:port Path string RawQuery string // 編碼後的查詢字符串,沒有'?' Fragment string // 引用的片斷(文檔位置),沒有'#' }

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

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/"}url

func Parse

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

Parse函數解析rawurl爲一個URL結構體,rawurl能夠是絕對地址,也能夠是相對地址。 spa

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?queryopaque?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爲上下文來解析一個URLref能夠是絕對或相對URL

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

func (*URL) ResolveReference

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

本方法根據一個絕對URI將一個URI補全爲一個絕對URI,參見RFC 3986  5.2。參數ref能夠是絕對URI或者相對URIResolveReference老是返回一個新的URL實例,即便該實例和u或者ref徹底同樣。若是ref是絕對URI,本方法會忽略參照URI並返回ref的一個拷貝。

type Userinfo

type Userinfo struct { // 內含隱藏或非導出字段 }

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

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的鍵是大小寫敏感的。

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的值集會返回空字符串。獲取值集請直接用map

func (Values) Set

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

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

func (Values) Add

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

Addvalue添加到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"),編碼時會以鍵進行排序。

相關文章
相關標籤/搜索