当前位置: 首页 > wzjs >正文

商城网站 搭建新闻投稿

商城网站 搭建,新闻投稿,免费ui设计网站,全球疫情实时动态数据前言 无论是微服务还是单体架构等,服务间都有相互通信的时候,而最直接的通信方法就是 HTTP 调用,本文将会介绍在 Go 语言里,如何进行 HTTP 调用,并举例说明。 前置知识 HTTP 调用需要通过 http 包里的 Client 结构体里…

前言
无论是微服务还是单体架构等,服务间都有相互通信的时候,而最直接的通信方法就是 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 的值,可以获取接口的响应体。
GET 请求

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 方法进行设置。
HTTP 请求响应码可以通过 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 参数如何设置,以及响应体的获取方法。

http://www.dtcms.com/wzjs/118311.html

相关文章:

  • 用模板做的网站不好优化自己怎么做网页推广
  • 六安网约车资格证在哪里办seo快速上排名
  • 网站建设简单吗全国十大教育机构
  • 做国际贸易如何建网站网页模板图片
  • 做电影网站如何不侵权百度经验官网登录
  • 东坑网站建设单页网站seo如何优化
  • 代码库网站搜索引擎是什么意思啊
  • 石家庄网络营销公司有哪些青岛自动seo
  • wordpress文章列表插件广州网络seo公司
  • 苏州网站优化微信朋友圈广告推广
  • 建e室内设计网全景分类seo关键词优化是什么意思
  • 女与男爱做电影网站免费seo推广平台服务
  • 做网站软件排名uc信息流广告投放
  • 北京网站建设公司升上去微信广告推广平台
  • 滑动 手机网站 代码成都做网络推广的公司有哪些
  • 点金wordpress网络推广seo怎么做
  • 自己做的网站能放到织梦上广东今日最新疫情通报
  • 福州网站建设seo主要做什么
  • 网站建设制作设计广州seo优化排名推广
  • 广州建设局官网seo哪家公司好
  • 奢侈品购物网站排名如何设计与制作网页
  • 网站建设客户会问的问题百度搜索指数在线查询
  • 如何做网站demo百度关键词推广怎么收费
  • 怎样申请网站域名灵感关键词生成器
  • wordpress网站正在建设中西安网站seo哪家公司好
  • 类似淘宝网 的淘宝客网站模板网络推广策划方案怎么写
  • 为客户网站做产品描述外贸seo优化
  • 做网站的公司如何推广如何提高网站在搜索引擎中的排名
  • 公司网站总感觉少点什么找什么人做百度推广视频
  • 微信上怎么做网站链接网络推广赚钱