背景
現在各種軟體到處都是,寫代碼難免有時候需要http 調用其他的接口。
其實這個東西還挺常用,雖然很簡單,但是寫的時候 又忘,就像是提筆忘字,索性總結一下吧。
不需要設定header屬性的http 請求
那就直接發,簡單快捷不拖沓。
http GET請求
resp, err := http.Get("http://abced.com/" + "/user/false/lsj")
if err != nil {
t.Log("query cluster failed", err.Error())
t.FailNow()
}
defer resp.Body.Close()
var serviceResp ServiceResp
respByte, _ := ioutil.ReadAll(resp.Body)
// 讀出body之後,就幹什麼幹什麼了,下同。
http POST請求
// 在别處定義
info := model.User{
Desc: "test UserInfo",
UserId: "lsj",
TopicName: "test",
ClusterName: "test",
Type: 1,
}
byte, _ := json.Marshal(info)
resp, err := http.Post("http://abced.com/" + "/user/save", "application/json", strings.NewReader(string(byte)))
if err != nil {
t.Log("query info failed", err.Error())
t.FailNow()
}
defer resp.Body.Close()
var serviceResp ServiceResp
respByte, _ := ioutil.ReadAll(resp.Body)
......
需要設定header屬性的http 請求
那就new 一個 request,再設定其header 就好了
設定header 的GET請求
req, _ := http.NewRequest("GET", "http://abced.com/" + "/user/false/lsj", nil)
// 比如說設定個token
req.Header.Set("token", "d8cdcf8427e")
// 再設定個json
req.Header.Set("Content-Type","application/json")
resp, err := (&http.Client{}).Do(req)
//resp, err := http.Get(serviceUrl + "/topic/query/false/lsj")
if err != nil {
t.Log("query topic failed", err.Error())
t.FailNow()
}
defer resp.Body.Close()
var serviceResp ServiceResp
respByte, _ := ioutil.ReadAll(resp.Body)
......
設定header 的POST請求
// 在别處定義
info := model.User{
Desc: "test UserInfo",
UserId: "lsj",
TopicName: "test",
ClusterName: "test",
Type: 1,
}
byte, _ := json.Marshal(info)
req, _ := http.NewRequest("POST", "http://abced.com/" + "/user/false/lsj", strings.NewReader(string(byte)))
req.Header.Set("token", "00998ecf8427e")
resp, err := (&http.Client{}).Do(req)
if err != nil {
t.Log("save topic failed", err.Error())
t.FailNow()
}
defer resp.Body.Close()
var serviceResp ServiceResp
respByte, _ := ioutil.ReadAll(resp.Body)
......