標(biāo)準(zhǔn)庫 net/url 翻譯

package url

import "net/url"

url 包解析了 URL 并實(shí)現(xiàn)了查詢的轉(zhuǎn)碼,參見 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
  • URL

  • Values

func QueryEscape

func QueryEscape(s string) string

QueryEscape 函數(shù)對 s 進(jìn)行轉(zhuǎn)碼使之可以安全的用在 URL 查詢里。

func QueryUnescape

func QueryUnescape(s string) (string, error)

QueryUnescape 函數(shù)用于將QueryEscape轉(zhuǎn)碼的字符串還原肠虽。它會把%AB改為字節(jié)0xAB醉者,將'+'改為''。如果有某個%后面未跟兩個十六進(jìn)制的數(shù)字窥岩,本函數(shù)會返回錯誤甲献。

type Error

type Error struct {
    Op  string
    URL string
    Err error
}

Error 會報(bào)告一個錯誤,以及該錯誤發(fā)生的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      // 編碼后的不透明數(shù)據(jù)
    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/呻疹。這導(dǎo)致我們無法確定 Path 字段中的斜線是來自原始 URL 還是解碼前的 %2f吃引。除非一個客戶端必須使用其他程序/函數(shù)來解析原始 URL 或者重構(gòu)原始 URL,這個區(qū)別并不重要刽锤。此時镊尺,HTTP 服務(wù)端可以查詢 req.RequestURI,而 HTTP 客戶端可以使用 URL {Host: "example.com", Opaque: "http://example.com/Go%2f"} 代替 {Host: "example.com", Path: "/Go/"}并思。

func Parse

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

Parse 函數(shù)解析 rawurl 為一個 URL 結(jié)構(gòu)體庐氮,rawurl 可以是絕對地址,也可以是相對地址宋彼。

func ParseRequestURI

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

ParseRequestURI 函數(shù)解析 rawurl 為一個 URL 結(jié)構(gòu)體弄砍,本函數(shù)會假設(shè) rawurl 是在一個 HTTP 請求里仙畦,因此會假設(shè)該參數(shù)是一個絕對 URL 或者絕對路徑,并會假設(shè)該 URL 沒有 #fragment 后綴音婶。(網(wǎng)頁瀏覽器會在去掉該后綴才將網(wǎng)址發(fā)送到網(wǎng)頁瀏覽器)慨畸。

func (*URL) IsAbs

func (u *URL) IsAbs() bool

函數(shù)在 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 重構(gòu)為一個合法 URL 字符串瞳收。

func (*URL) Parse

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

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

本方法解析失敗會返回 nil, err; 否則返回結(jié)果和 ResolveReference 一致螟深。

func (*URL) ResolveReference

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

本方法根據(jù)一個絕對 URI 將一個 URL 補(bǔ)全為一個 絕對URI谐宙。參數(shù) ref 可以是絕對 URI 或者相對 URI。ResolveReference 總是返回一個新的 URL 實(shí)例界弧,即使該實(shí)例和 u 或者 ref 完全一樣凡蜻。如果 ref 是絕對 URI,本方法會忽略參照 URI 并返回 ref 的一個拷貝垢箕。

type Userinfo

type Userinfo struct {
    // 內(nèi)含隱藏或非導(dǎo)出字段
}

Userinfo 類型是一個 URL 的用戶名和細(xì)節(jié)的一個不可修改的封裝划栓。一個真實(shí)存在的 Userinfo 值必須保證有用戶名以及一個可選的密碼。

func User

func User(username string) *Userinfo

User 函數(shù)返回一個用戶名設(shè)置為 username 的不設(shè)置密碼的 *Userinfo条获。

func UserPassword

func UserPassword(username, password string) *Userinfo

UserPassword 函數(shù)返回一個用戶名設(shè)置為 username忠荞、密碼設(shè)置為 password 的 *Userinfo。

func (*Userinfo) Username

func (u *Userinfo) Username() string

Username 方法返回用戶名帅掘。

func (*Userinfo) Password

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

如果設(shè)置了密碼返回密碼和真委煤,否則會返回假。

func (*Userinfo) String

func (u *Userinfo) String() string

String 方法返回編碼后的用戶信息修档,格式為 "username[:password]"碧绞。

type Values

type Value map[string][]string

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

func ParseQuery

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

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

func (Values) Get

func (v Values) Get(key string) string

Get 會獲取 key 對應(yīng)的值集的第一個值鲫惶。如果沒有對應(yīng) key 的值集會返回空字符串蜈首。獲取值集請直接用 map实抡。

func (Values) Set

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

Set 方法將 key 對應(yīng)的值集設(shè)為只有 value欠母,它會替換掉已有的值集。

func (Values) Add

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

Add 將 value 添加到 key 關(guān)聯(lián)的值集里面原有的值后面吆寨。

func (Values) Del

func (v Values) Del (key string)

Del 刪除 key 關(guān)聯(lián)的值集赏淌。

func (Values) Encode

func (v Values) Encode() string

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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末六水,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子辣卒,更是在濱河造成了極大的恐慌掷贾,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件荣茫,死亡現(xiàn)場離奇詭異想帅,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)啡莉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進(jìn)店門港准,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人咧欣,你說我怎么就攤上這事浅缸。” “怎么了魄咕?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵衩椒,是天一觀的道長。 經(jīng)常有香客問我蚕礼,道長烟具,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任奠蹬,我火速辦了婚禮朝聋,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘囤躁。我一直安慰自己冀痕,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布狸演。 她就那樣靜靜地躺著言蛇,像睡著了一般。 火紅的嫁衣襯著肌膚如雪宵距。 梳的紋絲不亂的頭發(fā)上腊尚,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天,我揣著相機(jī)與錄音满哪,去河邊找鬼婿斥。 笑死劝篷,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的民宿。 我是一名探鬼主播娇妓,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼活鹰!你這毒婦竟也來了哈恰?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤志群,失蹤者是張志新(化名)和其女友劉穎着绷,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體锌云,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蓬戚,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了宾抓。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片子漩。...
    茶點(diǎn)故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖石洗,靈堂內(nèi)的尸體忽然破棺而出幢泼,到底是詐尸還是另有隱情,我是刑警寧澤讲衫,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布缕棵,位于F島的核電站,受9級特大地震影響涉兽,放射性物質(zhì)發(fā)生泄漏招驴。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一枷畏、第九天 我趴在偏房一處隱蔽的房頂上張望别厘。 院中可真熱鬧,春花似錦拥诡、人聲如沸触趴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽冗懦。三九已至,卻和暖如春仇祭,著一層夾襖步出監(jiān)牢的瞬間披蕉,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留没讲,地道東北人承冰。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像食零,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子寂屏,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評論 2 359

推薦閱讀更多精彩內(nèi)容