import "net/url" html
url包解析URL並實現了查詢的逸碼,參見RFC 3986。 瀏覽器
url.go 安全
func QueryEscape(s string) string
QueryEscape函數對s進行轉碼使之能夠安全的用在URL查詢裏。 服務器
func QueryUnescape(s string) (string, error)
QueryUnescape函數用於將QueryEscape轉碼的字符串還原。它會把%AB改成字節0xAB,將'+'改成' '。若是有某個%後面未跟兩個十六進制數字,本函數會返回錯誤。 函數
type Error struct { Op string URL string Err error }
Error會報告一個錯誤,以及致使該錯誤發生的URL和操做。 ui
func (e *Error) Error() string
type EscapeError string
func (e EscapeError) Error() string
type URL struct { Scheme string Opaque string // 編碼後的不透明數據 User *Userinfo // 用戶名和密碼信息 Host string // host或host: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(rawurl string) (url *URL, err error)
Parse函數解析rawurl爲一個URL結構體,rawurl能夠是絕對地址,也能夠是相對地址。 spa
func ParseRequestURI(rawurl string) (url *URL, err error)
ParseRequestURI函數解析rawurl爲一個URL結構體,本函數會假設rawurl是在一個HTTP請求裏,所以會假設該參數是一個絕對URL或者絕對路徑,並會假設該URL沒有#fragment後綴。(網頁瀏覽器會在去掉該後綴後纔將網址發送到網頁服務器)
func (u *URL) IsAbs() bool
函數在URL是絕對URL時才返回真。
func (u *URL) Query() Values
Query方法解析RawQuery字段並返回其表示的Values類型鍵值對。
func (u *URL) RequestURI() string
RequestURI方法返回編碼好的path?query或opaque?query字符串,用在HTTP請求裏。
func (u *URL) String() string
String將URL重構爲一個合法URL字符串。
func (u *URL) Parse(ref string) (*URL, error)
Parse方法以u爲上下文來解析一個URL,ref能夠是絕對或相對URL。
本方法解析失敗會返回nil, err;不然返回結果和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 struct { // 內含隱藏或非導出字段 }
Userinfo類型是一個URL的用戶名和密碼細節的一個不可修改的封裝。一個真實存在的Userinfo值必須保證有用戶名(但根據 RFC 2396能夠是空字符串)以及一個可選的密碼。
func User(username string) *Userinfo
User函數返回一個用戶名設置爲username的不設置密碼的*Userinfo。
func UserPassword(username, password string) *Userinfo
UserPassword函數返回一個用戶名設置爲username、密碼設置爲password的*Userinfo。
這個函數應該只用於老式的站點,由於風險很大,不建議使用,參見RFC 2396。
func (u *Userinfo) Username() string
Username方法返回用戶名。
func (u *Userinfo) Password() (string, bool)
若是設置了密碼返回密碼和真,不然會返回假。
func (u *Userinfo) String() string
String方法返回編碼後的用戶信息,格式爲"username[:password]"。
type Values map[string][]string
Values將建映射到值的列表。它通常用於查詢的參數和表單的屬性。不一樣於http.Header這個字典類型,Values的鍵是大小寫敏感的。
func ParseQuery(query string) (m Values, err error)
ParseQuery函數解析一個URL編碼的查詢字符串,並返回能夠表示該查詢的Values類型的字典。本函數老是返回一個包含了全部合法查詢參數的非nil字典,err用來描述解碼時遇到的(若是有)第一個錯誤。
func (v Values) Get(key string) string
Get會獲取key對應的值集的第一個值。若是沒有對應key的值集會返回空字符串。獲取值集請直接用map。
func (v Values) Set(key, value string)
Set方法將key對應的值集設爲只有value,它會替換掉已有的值集。
func (v Values) Add(key, value string)
Add將value添加到key關聯的值集裏原有的值的後面。
func (v Values) Del(key string)
Del刪除key關聯的值集。
func (v Values) Encode() string
Encode方法將v編碼爲url編碼格式("bar=baz&foo=quux"),編碼時會以鍵進行排序。