广告
返回顶部
首页 > 资讯 > 后端开发 > GO >详解Go语言如何进行Http调用
  • 750
分享到

详解Go语言如何进行Http调用

Go语言Http调用GoHttp调用 2022-12-15 12:12:37 750人浏览 泡泡鱼
摘要

目录前言前置知识GET 请求小结前言 无论是微服务还是单体架构等,服务间都有相互通信的时候,而最直接的通信方法就是 Http 调用,本文将会介绍在 Go 语言里,如何进行 HTTP

前言

无论是微服务还是单体架构等,服务间都有相互通信的时候,而最直接的通信方法就是 Http 调用,本文将会介绍在 Go 语言里,如何进行 HTTP 调用,并举例说明。

前置知识

HTTP 调用需要通过 http 包里的 Client 结构体里的 Do 方法去实现,因此需要先声明一个 Client 结构体变量,该结构体可以设置超时时间等配置。

对于一个请求里的 URL,查询参数,请求 method 等参数,需要 http 包里的 Request 结构体去封装。我们可以通过 NewRequestWithContextNewRequest 函数获取一个基础的 Request 结构体指针变量。

NewRequestWithContext(ctx context.Context, method, url string, body io.Reader) (*Request, error)

  • 参数 ctxContext 的接口类型,任意实现 Context 接口的自定义类型都可以作为此参数传递。
  • 参数 methodHTTP 方法参数,可选值有 GETPOSTDELETEPUT等。
  • 参数 url 为接口的请求路径。
  • 参数 body,为请求体参数。

通过 client.Do(req) 方法调用之后,返回值有 (*Response, error),第一个是响应结构体参数,第二个是错误参数。通过读取 Responsebody 的值,可以获取接口的响应体。

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 请求响应码可以通过 ResponseStatusCode 字段进行查看。
  • 接口请求成功之后,通过 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文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 详解Go语言如何进行Http调用
    目录前言前置知识GET 请求小结前言 无论是微服务还是单体架构等,服务间都有相互通信的时候,而最直接的通信方法就是 HTTP 调用,本文将会介绍在 Go 语言里,如何进行 HTTP ...
    99+
    2022-12-15
    Go语言Http调用 Go Http调用
  • Go语言Http调用之Post请求详解
    目录前言POST 请求小结前言 上篇文章 Go HTTP 调用(上) 介绍了如何进行 HTTP 调用,并通过 GET 请求的例子,讲述了 query 参数和 header 参数如何设...
    99+
    2022-12-15
    Go语言 Post请求 Go Post请求 Go Post
  • 如何在Unix系统中使用Go语言进行HTTP加载?
    在Unix系统中,使用Go语言进行HTTP加载是一种非常常见的操作。Go语言的标准库中提供了一系列的HTTP处理函数,使得HTTP加载变得非常容易。在本文中,我们将介绍如何在Unix系统中使用Go语言进行HTTP加载,并且提供一些示例代码来...
    99+
    2023-08-15
    load http unix
  • 详解如何在Go语言中调用C源代码
    目录开坑说明内嵌形式外置的C代码1. 构建libauth.a静态库2. 对main.go稍加修改3. 编译开坑说明 最近在编写客户端程序或与其他部门做功能集成时多次碰到了跨语言...
    99+
    2022-06-07
    GO go语言
  • Go语言如何使用golang-jwt/jwt/v4进行JWT鉴权详解
    目录前言1.什么是JWT2.JWT的数据结构2.1 Header2.2 Payload2.3 Signature2.4 Base64URL3使用JWT安装生成Token总结前言 最近...
    99+
    2022-11-11
  • Go语言函数的延迟调用(DeferredCode)详解
    目录基本功能示例一:延迟调用执行顺序示例二:多defer使用方法实例三:defer与局部变量、返回值的关系先解释一下这篇Blog延期的原因,本来已经准备好了全部内容,但是当我重新回顾...
    99+
    2022-11-13
  • Windows系统中如何使用Go语言进行HTTP重定向操作?
    在Windows系统中,使用Go语言进行HTTP重定向操作可以帮助我们实现网站的流量控制和管理。本文将介绍如何在Windows系统中使用Go语言进行HTTP重定向操作,并提供相应的代码示例。 一、HTTP重定向简介 HTTP重定向是指在浏览...
    99+
    2023-10-10
    windows http 重定向
  • 详解Go语言如何使用标准库sort对切片进行排序
    目录sort 标准库Ints 和 IntsAreSortedFloat64s 和 Float64sAreSortedStrings 和 StringsAreSortedSortInt...
    99+
    2022-12-21
    Go语言sort切片排序 Go语言 切片排序 Go语言sort
  • 如何使用 Go 语言处理 HTTP 对象?
    Go 语言是一门快速、简单、高效的编程语言,它在处理 HTTP 对象方面非常出色。在本文中,我们将深入探讨如何使用 Go 语言处理 HTTP 对象,让你能够更好地掌握 Go 语言的网络编程能力。 一、HTTP 对象概述 在开始讲解如何使用 ...
    99+
    2023-07-03
    大数据 http 对象
  • 如何使用Go语言写一个Http Server
    这篇文章主要介绍了如何使用Go语言写一个Http Server的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何使用Go语言写一个Http Server文章都会有所收获,下面我们一起来看看吧...
    99+
    2023-06-30
  • 如何用Go语言解决LeetCode难题,优化HTTP请求?
    在当今的编程领域中,LeetCode是一个非常受欢迎的网站,它提供了大量的编程难题,帮助程序员们锻炼编程能力。而在实际开发中,我们经常会遇到需要优化HTTP请求的情况。那么,如何使用Go语言来解决这些问题呢?下面我们来详细了解一下。 使用...
    99+
    2023-11-02
    leetcode npm http
  • 详解go语言中sort如何排序
    目录sort 包源码解读前言如何使用基本数据类型切片的排序自定义 Less 排序比较器自定义数据结构的排序分析下源码不稳定排序稳定排序查找Interface总结参考sort 包源码解...
    99+
    2022-11-13
  • go语言如何进行数组查询
    在Go语言中,可以使用for循环遍历数组并进行查询。以下是一个示例代码:```gopackage mainimport "fmt"f...
    99+
    2023-10-12
    Go语言
  • go语言如何进行类型转换
    这篇文章给大家分享的是有关go语言如何进行类型转换的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。在go语言中,类型转换用于将一种数据类型的变量转换为另外一种类型的变量,语法为“type_name(expressi...
    99+
    2023-06-28
  • GO语言在Windows环境下,如何高效地进行HTTP编程算法?
    随着互联网的快速发展,HTTP协议已经成为了网络编程的重要组成部分。而作为一门高效、简洁的编程语言,GO语言在HTTP编程中也有着不可忽视的优势。本文将介绍如何在Windows环境下,使用GO语言实现高效的HTTP编程算法。 一、安装GO...
    99+
    2023-09-19
    windows http 编程算法
  • Go 语言中的 HTTP 模块:如何使用 NPM?
    在现代的 Web 应用程序开发中,HTTP 协议是不可或缺的一部分,因为它是浏览器和服务器之间进行通信的标准协议。 Go 语言在其标准库中包含了一个用于处理 HTTP 请求和响应的模块,使得在 Go 语言中开发 Web 应用程序非常方便。...
    99+
    2023-09-08
    http npm linux
  • 如何利用Go语言进行内存优化
    以下是一些利用Go语言进行内存优化的方法:1. 使用指针:Go语言中,可以使用指针来减少内存占用。通过将大对象分配到堆上,而不是栈上...
    99+
    2023-10-12
    Go语言
  • 如何在Go语言中使用容器进行自然语言处理?
    自然语言处理是人工智能领域中最重要的应用之一。在Go语言中,使用容器进行自然语言处理是一种非常高效的方式。本文将介绍如何在Go语言中使用容器进行自然语言处理。 一、什么是容器? 容器是一种轻量级的虚拟化技术,可以在单个操作系统上运行多个独立...
    99+
    2023-10-06
    自然语言处理 容器 实时
  • Go语言如何与Linux API进行交互?
    Go语言作为一门开源的编程语言,已经被越来越多的程序员所采用。同时,Linux作为一款开源的操作系统,其API也被广泛使用。那么,如何在Go语言中与Linux的API进行交互呢? 一、Go语言中调用Linux API的方法 Go语言中可以使...
    99+
    2023-07-08
    linux api shell
  • GO语言在HTTP容器方面的应用如何?
    随着云计算和容器技术的兴起,HTTP容器在现代应用程序中已经变得非常流行。HTTP容器提供了一种轻量级的方式来运行应用程序,同时还可以很容易地进行扩展和管理。在这种情况下,GO语言在HTTP容器方面的应用是非常重要的。GO语言是一种高效、...
    99+
    2023-08-03
    http 容器 文件
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作