Go語言提供了快捷方便的方法進(jìn)行HTTP請求發(fā)送,特別是對于JSON字符串的請求發(fā)送,更是簡單易懂。
在Go中,我們可以通過http包中的常用方法,實(shí)現(xiàn)向服務(wù)器發(fā)送JSON字符串的請求并且解析響應(yīng)數(shù)據(jù)。
下面是一個(gè)基于HTTP POST方法向服務(wù)器發(fā)送JSON數(shù)據(jù)的例子:
package main import ( "bytes" "encoding/json" "fmt" "net/http" ) type Request struct { Username string `json:"username"` Password string `json:"password"` } type Response struct { Status int `json:"status"` Message string `json:"message"` } func main() { url := "https://example.com/api/login" reqBody := Request{"user123", "password123"} jsonBody, _ := json.Marshal(reqBody) req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonBody)) req.Header.Set("Content-Type", "application/json") client := &http.Client{} resp, err := client.Do(req) if err != nil { panic(err) } defer resp.Body.Close() var resBody Response err = json.NewDecoder(resp.Body).Decode(&resBody) if err != nil { panic(err) } fmt.Println("Status:", resBody.Status) fmt.Println("Message:", resBody.Message) }
首先我們定義了一個(gè)Request和Response結(jié)構(gòu)體,用于存儲(chǔ)請求和響應(yīng)的數(shù)據(jù)。然后我們創(chuàng)建一個(gè)HTTP客戶端并發(fā)送POST請求,將JSON數(shù)據(jù)作為請求體發(fā)送到服務(wù)器。請求頭部中設(shè)置Content-Type為application/json,表示請求體是JSON格式數(shù)據(jù)。
最后,我們定義一個(gè)變量resBody用來接收響應(yīng)數(shù)據(jù),并將響應(yīng)數(shù)據(jù)JSON解碼到響應(yīng)結(jié)構(gòu)體中,通過打印輸出,我們可以方便的獲取到請求的響應(yīng)數(shù)據(jù)。