代理 指定網(wǎng)站 host北京百度快速排名
今天分享的內(nèi)容是 Go HTTP 調(diào)用。如果本文對(duì)你有幫助,不妨點(diǎn)個(gè)贊,如果你是 Go 語(yǔ)言初學(xué)者,不妨點(diǎn)個(gè)關(guān)注,一起成長(zhǎng)一起進(jìn)步,如果本文有錯(cuò)誤的地方,歡迎指出!
前言
上篇文章 Go HTTP 調(diào)用(上) 介紹了如何進(jìn)行 HTTP 調(diào)用,并通過(guò) GET 請(qǐng)求的例子,講述了 query 參數(shù)和 header 參數(shù)如何設(shè)置,以及響應(yīng)體的獲取方法。 本文繼上文,接下來(lái)會(huì)通過(guò) POST 請(qǐng)求,對(duì)其他參數(shù)的設(shè)置進(jìn)行介紹。
POST 請(qǐng)求
發(fā)起 HTTP POST 請(qǐng)求時(shí),攜帶 json 格式的 body 參數(shù)是最常見的,這是因?yàn)?json 格式的參數(shù)可讀性好,對(duì)于層級(jí)結(jié)構(gòu)較為復(fù)雜的數(shù)據(jù)也能應(yīng)對(duì),并且這符合 RestFul API 的規(guī)范。因此以下的示例為:發(fā)送 HTTP POST 請(qǐng)求,并攜帶 json 類型的 body 參數(shù)。
發(fā)起 HTTP POST 請(qǐng)求時(shí),攜帶 json 格式的 body 參數(shù)是最常見的,這是因?yàn)?json 格式的參數(shù)可讀性好,對(duì)于層級(jí)結(jié)構(gòu)較為復(fù)雜的數(shù)據(jù)也能應(yīng)對(duì),并且這符合 RestFul API 的規(guī)范。因此以下的示例為:發(fā)送 HTTP POST 請(qǐng)求,并攜帶 json 類型的 body 參數(shù)。作者:陳明勇
鏈接:https://juejin.cn/post/7177033678369849381
來(lái)源:稀土掘金
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
首先定義 User 結(jié)構(gòu)體,創(chuàng)建結(jié)構(gòu)體變量 user,通過(guò) json.Marshal 函數(shù),將 user 轉(zhuǎn)成 []byte 數(shù)據(jù),然后通過(guò) bytes.NewReader 函數(shù),將 []byte 數(shù)據(jù)轉(zhuǎn)成 Reader 指針變量。
http.NewRequestWithContext 函數(shù),最后一個(gè)參數(shù)是為 body 參數(shù),接收的變量類型是 Reader 接口的實(shí)現(xiàn)體。第一步將 user 轉(zhuǎn)成 Reader 指針變量就是為了在這里進(jìn)行傳遞。
傳遞 json 類型的 body 參數(shù),需要在請(qǐng)求頭參數(shù)里設(shè)置 Content-Type 的值為 application/json。
如果是發(fā)送 application/x-www-form-urlencoded 類型的表單數(shù)據(jù),需要改寫 body 參數(shù)的生成代碼:
values := url.Values{}
values.Set("username", "1234")
values.Set("password", "1234")
bodyReader := strings.NewReader(values.Encode())
小結(jié)
本文通過(guò) POST 請(qǐng)求,介紹了如何傳遞 json 類型和 application/x-www-form-urlencoded 類型的 body 參數(shù)。對(duì)于 HTTP 中的 query 參數(shù)和 body 參數(shù)的如何傳遞,上下兩篇文章已經(jīng)通過(guò)例子進(jìn)行介紹。雖然舉的例子是 GET 和 POST 請(qǐng)求,如果想要調(diào)用 PUT、DELETE 等請(qǐng)求,只需要在 NewRequestWithContext 函數(shù)中,指定第二個(gè)參數(shù)為 http.MethodPut、http.MethodDelete 等就行。