GoFrame HTTPClient-基本介紹

2022-04-14 10:48 更新

HTTP客戶端

?GoFrame?框架提供了強(qiáng)大便捷易用的?HTTP?客戶端,由?gclient?組件實(shí)現(xiàn),對象創(chuàng)建可以通過?gclient.New()?包方法,也可以通過?g.Client()?方法調(diào)用。推薦使用?g.Client()?來便捷地創(chuàng)建?HTTP?客戶端對象。

方法列表: https://pkg.go.dev/github.com/gogf/gf/v2/net/gclient

簡要說明:

  1. 我們可以使用?New?創(chuàng)建一個(gè)自定義的?HTTP?客戶端對象?Client?,隨后可以使用該對象執(zhí)行請求,該對象底層使用了連接池設(shè)計(jì),因此沒有?Close?關(guān)閉方法。?HTTP?客戶端對象也可以通過?g.Client()?快捷方法創(chuàng)建。
  2. 客戶端提供了一系列以?HTTP Method?命名的方法,調(diào)用這些方法將會發(fā)起對應(yīng)的?HTTP Method?請求。常用的方法是?Get?和?Post?方法,同時(shí)?DoRequest?是核心的請求方法,用戶可以調(diào)用該方法實(shí)現(xiàn)自定義的?HTTP Method?發(fā)送請求。
  3. 請求返回結(jié)果為?*ClientResponse?對象,可以通過該結(jié)果對象獲取對應(yīng)的返回結(jié)果,通過?ReadAll?/?ReadAllString?方法可以獲得返回的內(nèi)容,該對象在使用完畢后需要通過?Close?方法關(guān)閉,防止內(nèi)存溢出。
  4. ?*Bytes?方法用于獲得服務(wù)端返回的二進(jìn)制數(shù)據(jù),如果請求失敗返回?nil?;?*Content?方法用于請求獲得字符串結(jié)果數(shù)據(jù),如果請求失敗返回空字符串;?Set*?方法用于?Client?的參數(shù)設(shè)置。
  5. ?*Var?方法直接請求并獲取?HTTP?接口結(jié)果為泛型類型便于轉(zhuǎn)換。如果請求失敗或者請求結(jié)果為空,會返回一個(gè)空的?g.Var?泛型對象,不影響轉(zhuǎn)換方法調(diào)用。
  6. 可以看到,客戶端的請求參數(shù)的數(shù)據(jù)參數(shù)?data?數(shù)據(jù)類型為?interface{}?類型,也就是說可以傳遞任意的數(shù)據(jù)類型,常見的參數(shù)數(shù)據(jù)類型為?string?/?map?,如果參數(shù)為?map?類型,參數(shù)值將會被自動?urlencode?編碼。

請使用給定的方法創(chuàng)建?Client?對象,而不要使用?new(ghttp.Client)?或者?&ghttp.Client{}?創(chuàng)建客戶端對象。

HTTP返回對象

?gclient.Response?為?HTTP?對應(yīng)請求的返回結(jié)果對象,該對象繼承于?http.Response?,可以使用?http.Response?的所有方法。在此基礎(chǔ)之上增加了以下幾個(gè)方法:

func (r *Response) GetCookie(key string) string
func (r *Response) GetCookieMap() map[string]string
func (r *Response) Raw() string
func (r *Response) RawDump()
func (r *Response) RawRequest() string
func (r *Response) RawResponse() string
func (r *Response) ReadAll() []byte
func (r *Response) ReadAllString() string
func (r *Response) Close() error

這里也要提醒的是,?Response?需要手動調(diào)用?Close?方法關(guān)閉,也就是說,不管你使用不使用返回的?Response?對象,你都需要將該返回對象賦值給一個(gè)變量,并且手動調(diào)用其?Close?方法進(jìn)行關(guān)閉(往往使用?defer r.Close()?),否則會造成文件句柄溢出、內(nèi)存溢出。

一些重要說明

  • ?ghttp?客戶端默認(rèn)關(guān)閉了?KeepAlive?功能以及對服務(wù)端?TLS?證書的校驗(yàn)功能,如果需要啟用可自定義客戶端的?Transport?屬性。
  • 連接池參數(shù)設(shè)定、連接代理設(shè)置這些高級功能也可以通過自定義客戶端的?Transport?屬性實(shí)現(xiàn),該數(shù)據(jù)繼承于標(biāo)準(zhǔn)庫的?http.Transport?對象。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號