天天看點

golang-http 請求---設定header與直接發

背景

現在各種軟體到處都是,寫代碼難免有時候需要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)
    ......           
go