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实现支持多种类型的set

    Golang实现支持多种类型的set

    在项目开发中,常常会用到set去重,为什么不写一个set呢,而且go现在支持了泛型,所以本文就来用Golang实现一个支持多种类型的set呢
    2023-05-05
  • Golang并发之RWMutex的用法详解

    Golang并发之RWMutex的用法详解

    在 Go 语言中,RWMutex 是一种读写互斥锁的实现,它提供了一种简单有效的方式来管理对共享资源的并发访问。本文就来和大家详细聊聊RWMutex的用法吧
    2023-04-04
  • go 字符串修改的操作代码

    go 字符串修改的操作代码

    这篇文章主要介绍了go 字符串修改,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • Go操作各大消息队列教程(RabbitMQ、Kafka)

    Go操作各大消息队列教程(RabbitMQ、Kafka)

    消息队列是一种异步的服务间通信方式,适用于无服务器和微服务架构,本文主要介绍了Go操作各大消息队列教程(RabbitMQ、Kafka),需要的朋友可以了解一下
    2024-02-02
  • 关于Golang中for-loop与goroutine的问题详解

    关于Golang中for-loop与goroutine的问题详解

    这篇文章主要给大家介绍了关于Golang中for-loop与goroutine问题的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用golang具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2017-09-09
  • golang 实现tcp转发代理的方法

    golang 实现tcp转发代理的方法

    今天小编就为大家分享一篇golang 实现tcp转发代理的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • golang并发下载多个文件的方法

    golang并发下载多个文件的方法

    今天小编就为大家分享一篇golang并发下载多个文件的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • 使用GO语言实现Mysql数据库CURD的简单示例

    使用GO语言实现Mysql数据库CURD的简单示例

    本文主要介绍了使用GO语言实现Mysql数据库CURD的简单示例,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • Go并发编程之goroutine使用正确方法

    Go并发编程之goroutine使用正确方法

    并发编程有一种常见方式就是许多工作子协程都是独立的,互不干扰,但他们又是“同一时间”处理。本文重大给大家介绍Go并发编程goroutine使用方法,一起看看吧
    2021-09-09
  • 深入了解Golang中reflect反射基本原理

    深入了解Golang中reflect反射基本原理

    反射是这样一种机制,它是可以让我们在程序运行时(runtime)访问、检测和修改对象本身状态或行为的一种能力。本文主要带大家来看看Golang中reflect反射基本原理,需要的可以参考一下
    2023-01-01

最新评论