0
点赞
收藏
分享

微信扫一扫

Go HTTP 调用(下)

耐心和持久胜过激烈和狂热。

哈喽大家好,我是陈明勇,今天分享的内容是 Go HTTP 调用。如果本文对你有帮助,不妨点个赞,如果你是 Go 语言初学者,不妨点个关注,一起成长一起进步,如果本文有错误的地方,欢迎指出!

前言

上篇文章 ​​Go HTTP 调用(上)​​​ 介绍了如何进行 HTTP 调用,并通过 GET 请求的例子,讲述了 ​​query​​ 参数和 ​​header​​ 参数如何设置,以及响应体的获取方法。 本文继上文,接下来会通过 ​​POST​​ 请求,对其他参数的设置进行介绍。

POST 请求

发送 ​​HTTP​​ ​​POST​​ 请求,并携带 ​​json​​ 类型的 ​​body​​ 参数。

import (
"bytes"
"context"
"encoding/json"
"fmt"
"io"
"net/http"
)

type User struct {
Username string `json:"username"`
Password string `json:"password"`
}

func main() {
client := http.Client{}

user := User{
Username: "123456",
Password: "12346",
}
dataByte, err := json.Marshal(user)
if err != nil {
fmt.Println(err)
}
bodyReader := bytes.NewReader(dataByte)

request, err := http.NewRequestWithContext(context.Background(), http.MethodPost, "http://localhost:8080/user", bodyReader)
if err != nil {
return
}
request.Header.Set("Content-Type", "application/json")
resp, err := client.Do(request)
if err != nil {
fmt.Println(err)
return
}
fmt.Println("statusCode: ", resp.StatusCode)
body, err := io.ReadAll(resp.Body)
if err != nil {
return
}
defer resp.Body.Close()
fmt.Println(string(body))
}

  • 首先定义 ​​User​​ 结构体,创建结构体变量 user,通过 ​​json.Marshal​​ 函数,将 ​​user​​ 转成 ​​[]byte​​ 数据,然后通过 ​​bytes.NewReader​​ 函数,将 ​​[]byte​​ 数据转成 ​​Reader​​ 指针变量。
    ​http.NewRequestWithContext​​ 函数,最后一个参数是为 ​​body​​ 参数,接收的变量类型是 ​​Reader​​ 接口的实现体。第一步将 ​​user​​ 转成 ​​Reader​​ 指针变量就是为了在这进行传递。
举报

相关推荐

0 条评论