Go語言的HTTP client包使得發(fā)送HTTP請求變得輕松簡單,它支持發(fā)送JSON請求,同時也可以通過解析響應的JSON數據來獲得所需的信息。
import ( "encoding/json" "net/http" ) type User struct { Name string `json:"name"` Age int `json:"age"` } func main() { u := User{Name: "Tom", Age: 18} b, err := json.Marshal(u) if err != nil { panic(err) } req, err := http.NewRequest("POST", "http://example.com/api/users", bytes.NewBuffer(b)) if err != nil { panic(err) } 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 user User err = json.NewDecoder(resp.Body).Decode(&user) if err != nil { panic(err) } }
在上面的示例中,首先創(chuàng)建了一個User結構體,然后使用json.Marshal()函數將結構體的數據編碼為JSON格式,并將其作為請求的body發(fā)送到指定的HTTP地址。此外,還需要設置請求頭的Content-Type為application/json,以告訴服務器請求的格式。
然后使用http.NewRequest()函數創(chuàng)建一個請求,該請求采用POST方法,并將JSON格式的數據傳遞給服務器。在得到響應后,使用json.NewDecoder()函數將響應體的JSON數據解碼為User結構體。
在實際開發(fā)中,我們可能需要處理各種不同的HTTP請求和響應,但使用Go語言的HTTP client包卻可以輕松地實現我們的需求。