go语言fasthttp使用实例小结

 更新时间:2024年06月24日 14:29:19   作者:小雨喳  
fasthttp 是一个使用 Go 语言开发的 HTTP 包,主打高性能,针对 HTTP 请求响应流程中的 hot path 代码进行了优化,下面我们就来介绍go语言fasthttp使用实例小结,感兴趣的朋友跟随小编一起看看吧

一、服务搭建和接收参数实例

package main
import (
    "fmt"
    "github.com/buaazp/fasthttprouter"
    "github.com/valyala/fasthttp"
)
// index 页
func Index(ctx *fasthttp.RequestCtx) {
    ctx.Request.Header.Peek("userid")//获取header头参数
    fmt.Fprint(ctx, "Welcome")
}
// 简单路由页
func Hello(ctx *fasthttp.RequestCtx) {
    name:= ctx.UserValue("name").(string) //获取路由参数name
    fmt.Fprintf(ctx, "hello")
}
// 获取GET请求json数据
func TestGet(ctx *fasthttp.RequestCtx) {
    values := ctx.QueryArgs() // 使用 ctx.QueryArgs() 方法
    fmt.Fprint(ctx, string(values.Peek("abc"))) // 不加string返回的byte数组
    fmt.Fprint(ctx, string(ctx.FormValue("abc"))) // 获取表单数据
}
// 获取post的请求json数据
func TestPost(ctx *fasthttp.RequestCtx) {
    postBody := ctx.PostBody() // 这两行可以获取PostBody数据,文件上传也有用
    fmt.Fprint(ctx, string(postBody))
    fmt.Fprint(ctx, string(ctx.FormValue("abc"))) // 获取表单数据
}
func main() {
    // 创建路由
    router := fasthttprouter.New()
    // 不同的路由执行不同的处理函数
    router.GET("/", Index)
    router.GET("/hello/:name", Hello)
    router.GET("/get", TestGet)
    // post方法
    router.POST("/post", TestPost)
    // 启动web服务器,监听 0.0.0.0:80
    log.Fatal(fasthttp.ListenAndServe(":08", router.Handler))
}

二、Post和Get请求实例

package main
import (
    "fmt"
    "github.com/valyala/fasthttp"
)
func main() {
	req := &fasthttp.Request{} //相当于获取一个对象
	req.SetRequestURI("www.baidu.com")//设置请求的url
	bytes, err := json.Marshal(data)//data是请求数据
	if err != nil {
		return nil, err
	}
	req.SetBody(bytes)//存储转换好的数据
	req.Header.SetContentType("application/json")//设置header头信息
	req.Header.SetMethod(method)//设置请求方法
	resp := &fasthttp.Response{}//相应结果的对象
	client := &fasthttp.Client{}//发起请求的对象
	if err := client.Do(req, resp); err != nil {
		return nil, err
	}
	var param model.Data //定义好的结构体用来存放相应数据
	err = json.Unmarshal(resp.Body(), &param)
	if err != nil {
		return nil, err
    }
	return param, nil
}

到此这篇关于go语言fasthttp使用实例的文章就介绍到这了,更多相关Go fasthttp内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 几个小技巧帮你实现Golang永久阻塞

    几个小技巧帮你实现Golang永久阻塞

    Go 的运行时的当前设计,假定程序员自己负责检测何时终止一个 goroutine 以及何时终止该程序。有时候我们需要的是使程序阻塞在这一行,本文就来详细的介绍一下,感兴趣的可以了解一下
    2021-12-12
  • 在Go中动态替换SQL查询中的日期参数的完整步骤

    在Go中动态替换SQL查询中的日期参数的完整步骤

    在处理数据库查询时,经常需要根据不同的输入条件动态地构造SQL语句,尤其是在涉及日期范围的查询中,能够根据实际需求调整查询的起始和结束日期显得尤为重要,在本文中,我将介绍如何在Go语言中实现动态替换SQL查询中的日期参数,需要的朋友可以参考下
    2024-11-11
  • Go语言设计模式之结构型模式

    Go语言设计模式之结构型模式

    本文主要聚焦在结构型模式(Structural Pattern)上,其主要思想是将多个对象组装成较大的结构,并同时保持结构的灵活和高效,从程序的结构上解决模块之间的耦合问题
    2021-06-06
  • golang1.21泛型函数全面讲解

    golang1.21泛型函数全面讲解

    在Go编程语言中,泛型一直是一个备受期待的特性,随着Go 1.21的发布,本文旨在提供Go 1.21中泛型的详细探索,阐明它们的优点、语法、实现和最佳实践,希望对大家有所帮助
    2023-09-09
  • Go语言的反射reflect使用大全

    Go语言的反射reflect使用大全

    Go语言中reflect包提供了运行时反射的功能,本文主要介绍了Go语言的反射reflect使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-08-08
  • 一步步教你编写可测试的Go语言代码

    一步步教你编写可测试的Go语言代码

    相信每位编程开发者们应该都知道,Golang作为一门标榜工程化的语言,提供了非常简便、实用的编写单元测试的能力。本文通过Golang源码包中的用法,来学习在实际项目中如何编写可测试的Go代码。有需要的朋友们可以参考借鉴,下面跟着小编一起去学习学习吧。
    2016-11-11
  • 详解Go语言如何利用高阶函数写出优雅的代码

    详解Go语言如何利用高阶函数写出优雅的代码

    高阶函数(Hiher-order Function)定义为:满足下列条件之一的函数:接收一个或多个函数作为参数;返回值是一个函数。本文为大家介绍了如何利用高阶函数写出优雅的代码,希望对大家有所帮助
    2023-01-01
  • 详解golang开发中http请求redirect的问题

    详解golang开发中http请求redirect的问题

    这篇文章主要介绍了详解golang开发中http请求redirect的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • Golang创建构造函数的方法超详细讲解

    Golang创建构造函数的方法超详细讲解

    构造器一般面向对象语言的典型特性,用于初始化变量。Go语言没有任何具体构造器,但我们能使用该特性去初始化变量。本文介绍不同类型构造器的差异及其应用场景
    2023-01-01
  • Golang数组的传递详解

    Golang数组的传递详解

    今天小编就为大家分享一篇关于Golang数组的传递详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03

最新评论