返回顶部
首页 > 资讯 > 后端开发 > GO >golang高性能的http请求 fasthttp详解
  • 265
分享到

golang高性能的http请求 fasthttp详解

2024-04-02 19:04:59 265人浏览 安东尼
摘要

fastHttp是golang下的一个http框架,顾名思义,与原生的http实现相比,它的特点在于快,按照官网的说法,它的客户端和服务端性能比原生有了十倍的提升。 它的高性能主要源

fastHttpgolang下的一个http框架,顾名思义,与原生的http实现相比,它的特点在于快,按照官网的说法,它的客户端和服务端性能比原生有了十倍的提升。

它的高性能主要源自于“复用”,通过服务协程和内存变量的复用,节省了大量资源分配的成本。

fasthttp 据说是目前Golang性能最好的http库,相对于自带的net/http,性能说是有10倍的提升,具体介绍可以看看官方介绍:valyala/fasthttp

1,首先安装fasthttp


go get -u GitHub.com/valyala/fasthttp

2,简单的一个get请求


package main

import (
    "github.com/valyala/fasthttp"
)

func main() {
    url := `http://httpbin.org/get`

    status, resp, err := fasthttp.Get(nil, url)
    if err != nil {
        fmt.Println("请求失败:", err.Error())
        return
    }

    if status != fasthttp.StatusOK {
        fmt.Println("请求没有成功:", status)
        return
    }

    fmt.Println(string(resp))
}

2,简单的Post请求


func main() {
    url := `http://httpbin.org/post?key=123`
    
    // 填充表单,类似于net/url
    args := &fasthttp.Args{}
    args.Add("name", "test")
    args.Add("age", "18")

    status, resp, err := fasthttp.Post(nil, url, args)
    if err != nil {
        fmt.Println("请求失败:", err.Error())
        return
    }

    if status != fasthttp.StatusOK {
        fmt.Println("请求没有成功:", status)
        return
    }

    fmt.Println(string(resp))
}

比如有些api服务需要我们提供JSON body或者xml body也就是,Content-Type是application/json、application/xml或者其他类型


func main() {
    url := `http://httpbin.org/post?key=123`
    
    req := &fasthttp.Request{}
    req.SetRequestURI(url)
    
    requestBody := []byte(`{"request":"test"}`)
    req.SetBody(requestBody)

    // 默认是application/x-www-fORM-urlencoded
    req.Header.SetContentType("application/json")
    req.Header.SetMethod("POST")

    resp := &fasthttp.Response{}

    client := &fasthttp.Client{}
    if err := client.Do(req, resp);err != nil {
        fmt.Println("请求失败:", err.Error())
        return
    }

    b := resp.Body()

    fmt.Println("result:\r\n", string(b))
}

翻阅文档发现了他提供了几个方法:AcquireRequest()AcquireResponse(),而且也推荐了在有性能要求的代码中,通过 AcquireRequest 和 AcquireResponse 来获取 req 和 resp。


func main() {
    url := `http://httpbin.org/post?key=123`

    req := fasthttp.AcquireRequest()
    defer fasthttp.ReleaseRequest(req) // 用完需要释放资源
    
    // 默认是application/x-www-form-urlencoded
    req.Header.SetContentType("application/json")
    req.Header.SetMethod("POST")
    
    req.SetRequestURI(url)
    
    requestBody := []byte(`{"request":"test"}`)
    req.SetBody(requestBody)

    resp := fasthttp.AcquireResponse()
    defer fasthttp.ReleaseResponse(resp) // 用完需要释放资源

    if err := fasthttp.Do(req, resp); err != nil {
        fmt.Println("请求失败:", err.Error())
        return
    }

    b := resp.Body()

    fmt.Println("result:\r\n", string(b))
}

到此这篇关于golang高性能的http请求 fasthttp的文章就介绍到这了,更多相关golang fasthttp http请求内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

您可能感兴趣的文档:

--结束END--

本文标题: golang高性能的http请求 fasthttp详解

本文链接: https://lsjlt.com/news/135718.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • golang高性能的http请求 fasthttp详解
    fasthttp是golang下的一个http框架,顾名思义,与原生的http实现相比,它的特点在于快,按照官网的说法,它的客户端和服务端性能比原生有了十倍的提升。 它的高性能主要源...
    99+
    2024-04-02
  • pythonFlask框架之HTTP请求详解
    我们的浏览器访问网站时,默认为发送了一个HTTP的GET请求。 在浏览网站时,会经常填写表单,比如填写用户名密码。点击登录后,会跳转到我们的主页。 接下来,我们实现这个案例。 首先我...
    99+
    2024-04-02
  • Golang Sync包对高并发请求的性能优化效果
    Golang中的Sync包提供了一些用于同步操作的原语,包括互斥锁、读写锁、条件变量等,这些原语可以帮助开发者在高并发环境下确保数据...
    99+
    2023-10-08
    Golang
  • Python HTTP请求优化指南:提高你的网络应用性能
    优化Python HTTP请求的性能对于提高网络应用的速度和响应能力至关重要。本指南将介绍一些优化Python HTTP请求的技巧和最佳实践,帮助你提高网络应用的性能。 1. 使用连接池 连接池是一种管理HTTP连接的机制,它可以减少创...
    99+
    2024-02-23
    Python HTTP请求 性能优化 网络应用
  • Node.js中的HTTP请求与响应详解
    在C#、OC中也是客户端发起一个请求,服务端作出响应。我们可以把这个过程抽象理解 . 1.客户端给服务端发起请求相当于向服务端写入一个流(writable)2.服务端读取客户端的流(...
    99+
    2024-04-02
  • 详细讲解Golang请求包
    Golang是一门越来越受欢迎的编程语言,它在服务器端的应用领域日益增多。开发者们都知道,网络请求在服务器端开发中是必不可少的部分,那么Golang中怎么进行网络请求呢?本文将详细讲解Golang请求包,让大家更好地掌握Golang网络请求...
    99+
    2023-05-14
  • Python HTTP请求详解:发送、接收和解析网络请求
    在今天的网络世界中,HTTP 请求已成为必不可少的技术,它允许我们与服务器进行通信,获取数据并执行各种操作。Python 作为一门强大的编程语言,提供了丰富的库和工具,使得 HTTP 请求变得更加容易实现。了解并掌握 HTTP 请求的原理...
    99+
    2024-02-23
    Python HTTP 请求 发送请求 接收响应 解析响应
  • 详解node HTTP请求客户端 - Request
    Request是一个Node.jsNPM模块,它是一个HTTP客户端,使用简单功能确十分强大。我们可以用它来实现HTTP响应流的转接、模拟Form表单提交、支持HTTP认证、OAuth登录、自定义请求头等。...
    99+
    2022-06-04
    详解 客户端 HTTP
  • Flutter Http网络请求实现详解
    Http网络请求是一门开发语言里比较常用和重要的功能,主要用于资源访问、接口数据请求和提交、上传下载文件等等操作,Http请求方式主要有:GET、POST、HEAD、PUT、DELE...
    99+
    2024-04-02
  • HTTP 请求和响应的全过程详解。
    HTTP(Hypertext Transfer Protocol)是在客户端和服务器之间传输数据的协议。在这篇文章中,我们将详细介绍 HTTP 请求和响应的全过程,包括请求的构成、传输过程、响应的构成以及状态码的含义。同时,为了更好地理解,...
    99+
    2023-08-31
    bash numy http
  • 优化性能:Golang请求处理技巧
    优化性能:Golang请求处理技巧 随着互联网应用的流行,对于网站和服务端性能的要求也越来越高。在处理大量请求时,如何优化Go语言的性能成为了一个重要的问题。本文将介绍一些提高Gola...
    99+
    2024-02-28
    并发控制 异步处理 缓存利用 go语言
  • Python HTTP请求与缓存:提高你网络应用的性能和效率
    HTTP请求、缓存、Python、网络应用性能、并发、稳定性 一、理解HTTP请求和缓存机制 HTTP请求: HTTP请求是客户端向服务器发送的数据请求。 HTTP缓存: HTTP缓存机制将经常访问的数据存储在客户端或代理服务器上。 当...
    99+
    2024-02-23
    Python HTTP请求缓存:提升性能与效率
  • 如何使用golang中的http.Client进行HTTP请求的高级操作
    如何使用golang中的http.Client进行HTTP请求的高级操作引言:在现代开发中,HTTP请求是不可避免的一部分。golang提供了强大的标准库,其中包含了http包。http包提供了http.Client结构体,用于发送HTTP...
    99+
    2023-11-18
    Http请求 Golang httpclient
  • Go类型安全的HTTP请求示例详解
    目录前言Go 原生写法httpc 实现更多能力前言 对 Gopher 来说,虽然我们基本都是在写代码让别人来请求,但是有时候,我们也需要去请求第三方提供的 RESTful 接口,这...
    99+
    2024-04-02
  • .Net中的Http请求调用详解(Post与Get)
    前言 http请求调用是开发中经常会用到的功能。在内,调用自有项目的Web Api等形式接口时会用到;在外,调用一些第三方功能接口时,也会用到,因为,这些第三方功能往往是通过http...
    99+
    2024-04-02
  • Go语言Http调用之Post请求详解
    目录前言POST 请求小结前言 上篇文章 Go HTTP 调用(上) 介绍了如何进行 HTTP 调用,并通过 GET 请求的例子,讲述了 query 参数和 header 参数如何设...
    99+
    2022-12-15
    Go语言 Post请求 Go Post请求 Go Post
  • Swift中的HTTP请求体RequestBodies使用示例详解
    目录正文通用化body空请求体 EmptyBody数据体 DataBodyJSON体 JSONBody表单 FormBody其他Body Other Bodies正文 在进行HTT...
    99+
    2023-02-03
    Swift HTTP请求体Request Bodies Swift HTTP请求体
  • 高性能WEB开发减少请求数的方法
    这篇文章主要介绍“高性能WEB开发减少请求数的方法”,在日常操作中,相信很多人在高性能WEB开发减少请求数的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”高性能WEB开发...
    99+
    2024-04-02
  • RestTemplate发送HTTP GET请求使用方法详解
    目录前言一、getForObject()方法1.1.以String的方式接受请求结果数据1.2.以POJO对象的方式接受结果数据1.3.以数组的方式接收请求结果1.4.使用占位符号传...
    99+
    2024-04-02
  • RestTemplate发送HTTP POST请求使用方法详解
    目录一、postForObject发送JSON格式请求二、postForObject模拟表单数据提交三、url支持占位符语法四、postForEntity()方法五、postForL...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作