目录前言前置知识GET 请求小结前言 无论是微服务还是单体架构等,服务间都有相互通信的时候,而最直接的通信方法就是 Http 调用,本文将会介绍在 Go 语言里,如何进行 HTTP
无论是微服务还是单体架构等,服务间都有相互通信的时候,而最直接的通信方法就是 Http
调用,本文将会介绍在 Go
语言里,如何进行 HTTP
调用,并举例说明。
HTTP
调用需要通过 http
包里的 Client
结构体里的 Do
方法去实现,因此需要先声明一个 Client
结构体变量,该结构体可以设置超时时间等配置。
对于一个请求里的 URL
,查询参数,请求 method
等参数,需要 http
包里的 Request
结构体去封装。我们可以通过 NewRequestWithContext
或 NewRequest
函数获取一个基础的 Request
结构体指针变量。
NewRequestWithContext(ctx context.Context, method, url string, body io.Reader) (*Request, error)
ctx
为 Context
的接口类型,任意实现 Context
接口的自定义类型都可以作为此参数传递。method
为 HTTP
方法参数,可选值有 GET
、POST
、DELETE
、PUT
等。url
为接口的请求路径。body
,为请求体参数。通过 client.Do(req)
方法调用之后,返回值有 (*Response, error)
,第一个是响应结构体参数,第二个是错误参数。通过读取 Response
的 body
的值,可以获取接口的响应体。
import (
"context"
"fmt"
"io"
"net/http"
)
func main() {
client := http.Client{}
request, err := http.NewRequestWithContext(context.Background(), http.MethodGet, "http://localhost:8080/user?name=tom", nil)
if err != nil {
return
}
request.Header.Set("headerParam", "header")
resp, err := client.Do(request)
if err != nil {
fmt.Println(err)
return
}
bytes, err := io.ReadAll(resp.Body)
if err != nil {
return
}
defer resp.Body.Close()
fmt.Println(string(bytes)) // {"code":0,"data":{"list":[{"name":"小明","age":20},{"name":"小红","age":18}]},"message":"success"}
}
url
字符串上面。header
参数可以通过 request 结构体的 Header
字段的 set
方法或 add
方法进行设置。Response
的 StatusCode
字段进行查看。io.ReadAll
方法,读取 resp.Body
响应体信息。url
上拼接 query
参数的方式,我们还可以通过以下方式进行添加 query
参数:params := url.Values{}
rawUrl, err := url.Parse("http://localhost:8080/user")
if err != nil {
return
}
params.Set("name", "tom")
rawUrl.RawQuery = params.Encode()
u := rawUrl.String()
通过 url.Values
结构体的 set
方法设置 query参数,url
通过 url.Parse
函数生成一个 URL
结构体指针变量,rawUrl.RawQuery = params.Encode()
通过这行代码将 query
参数和 url
进行绑定,最后通过 String()
方法将 url
转换成 string
类型。
本文介绍了在 Go 语言里如何进行 HTTP 调用,需要通过 http
包里的 Client
结构体变量,调用其方法 Do
进行 HTTP
调用,在 HTTP 调用前,需要通过 http 包里的 Request
结构体封装请求路径和请求参数。最后通过 GET
请求案例讲述了 query
参数和 header
参数如何设置,以及响应体的获取方法。
到此这篇关于详解Go语言如何进行Http调用的文章就介绍到这了,更多相关Go语言Http调用内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
--结束END--
本文标题: 详解Go语言如何进行Http调用
本文链接: https://www.lsjlt.com/news/174890.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-04-05
2024-04-05
2024-04-05
2024-04-05
2024-04-05
2024-04-05
2024-04-05
2024-04-05
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0