go http請求庫HttpRequest


原文鏈接

目錄

安裝

go get https://github.com/kirinlabs/HttpRequest

發送請求

導入HttpRequest

import "github.com/kirinlabs/HttpRequest"

實例化

req := HttpRequest.NewRequest()

Get請求

然后,嘗試獲取某個網頁。我們來獲取 Github 的公共時間線

返回一個res的Response對象和err的Error對象

res,err := req.Get("https://api.github.com/events")

Post 請求

//無參請求
res,err := req.Post("https://www.baidu.com")
 
 
//請求體為文本
res,err := req.Post("https://www.baidu.com","hello")
 
 
//請求體為Json字符串
res,err := req.Post("https://www.baidu.com","{\"name\":\"github\"}")
 
 
//map傳參
res.err := req.Post("https://www.baidu.com",map[string]interface{}{
    "name":"github",
    "type":1,
})

 也可以不用實例化,直接發送請求

快速發送Get請求

res,err := HttpRequest.Get("https://www.baidu.com")

res,err := HttpRequest.Get("https://www.baidu.com","title=baidu")

快速發送Post請求

res,err := HttpRequest.Post("https://www.baidu.com")

res,err := HttpRequest.Post("https://www.baidu.com","title=baidu&type=pdf")

res,err := HttpRequest.Post("https://www.baidu.com",map[string]interface{}{
"title":"baidu",
})

快速發送JSON請求

res,err := HttpRequest.JSON().Post("https://www.baidu.com",map[string]interface{}{
    "title":"baidu",
})
 
res,err := HttpRequest.JSON().Post("https://www.baidu.com",`{"title":"baidu","type":"pdf"}`)

傳遞URL參數

你想為URL的查詢字符串(query string)傳遞數據。如:手工構建URL,http://www.baidu.com/index?key=value。HttpRequest允許你使用第2個參數以字符串"id=100&name=github"或map[string]interface{}{"id":10,"name":"github"}字典的形式把數據傳遞給URL:

手工傳參

res,err := req.Get("https://www.baidu.com/index?name=github")

字符串傳參

res,err := req.Get("https://www.baidu.com/index?name=github","id=100&type=1")

map傳參

res,err := req.Get("https://www.baidu.com/index?name=github",map[string]interface{}{
    "id":10,
    "type":1,
})

響應內容

能讀取服務器響應的內容

res,err := req.Post("https://api.github.com/events")

 獲取服務器返回的內容

body,err := res.Body()

fmt.Println(string(body))

獲取服務器響應狀態碼

res.StatusCode()

獲取服務器響應Headers

res.Headers()

返回一個map[string]string的字典

獲取請求響應時間

res.Time()

Json響應內容

HttpRequest內置JSON解碼,來解析JSON數據

//Format the json return value
body, err := res.Json() 

fmt.Println(body)

如果JSON解碼失敗,會返回一個err錯誤

定制請求頭

如果想為請求添加HTTP頭部信息,只需要簡單的傳一個map給SetHeaders方法

req.SetHeaders(map[string]string{
    "Content-Type":"application/json",
    "Source":"api",
})

注:所有header值必須是字符串,SetHeaders可以多次調用,如果Key重復則會覆蓋前面設置的值

BasicAuth 認證

如果想為請求添加HTTP頭部信息,只需要簡單的傳一個map給SetHeaders方法

req.SetBasicAuth("username","password")

 

JSON請求

如果想以json方式發送請求,HttpRequest支持2種方式

設置Header頭部信息

req.SetHeaders(map[string]string{"Content-Type":"application/json"})
 
req.Post("https://www.baidu.com","{\"name\":\"github\"}")

調用req.JSON()內置方法

//直接發磅Json字符串參數
res,err := req.JSON().Post("https://www.baidu.com","{\"name\":\"github\"}")
 
//自動將Map以Json方式發送參數
res,err := req.JSON().Post("https://www.baidu.com",map[string]interface{}{
    "name":"github"
})

Cookie

req.SetCookies(map[string]string{
    "name":"jason"
})

超時

req.SetTimeout(5)

關閉證書驗證

當請求https協議時提示x509: certificate signed by unknown authority時,可關閉證書驗證

req.SetTLSClient(&tls.Config{InsecureSkipVerify: true})

調試模式

req.Debug(true)

連接操作

而且還支持連接操作

req := HttpRequest.NewRequest().Debug(true).SetTimeout(5).SetHeader()

Respone對象

獲取返回的Response對象
resp.Response()

獲取返回碼
resp.StatusCode()

獲取Body主體信息   
resp.Body() 

獲取請求耗時
resp.Time() string   單位是毫秒

獲取真實Url
res.Url()

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM