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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Go语言中io包核心接口示例详解

    Go语言中io包核心接口示例详解

    Go的io包提供了io.Reader和io.Writer接口,分别用于数据的输入和输出,下面这篇文章主要给大家介绍了关于Go语言中io包核心接口的相关资料,需要的朋友可以参考下
    2021-12-12
  • go 熔断原理分析与源码解读

    go 熔断原理分析与源码解读

    这篇文章主要为大家介绍了go 熔断原理分析与源码解读,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • Go 代码生成工具详解

    Go 代码生成工具详解

    这篇文章主要介绍了Go 代码生成工具详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • Go语言配置解析库viper的使用指南

    Go语言配置解析库viper的使用指南

    viper 配置管理解析库,是由大神 Steve Francia 开发,本文就来和大家详细讲讲它的具体使用,文中的示例代码讲解详细,需要的可以收藏一下
    2023-06-06
  • 深入了解Golang的map增量扩容

    深入了解Golang的map增量扩容

    这篇文章主要介绍了深入了解Golang的map增量扩容,扩容的主要目的是为了缩短map容器的响应时间。增量扩容的本质其实就是将总的扩容时间分摊到了每一次hash操作上,更多相关内容需要的小伙伴可以参考一下
    2022-06-06
  • go程序中同一个包下为什么会存在多个同名的函数或变量(详细解析)

    go程序中同一个包下为什么会存在多个同名的函数或变量(详细解析)

    这篇文章主要介绍了go程序中同一个包下为什么会存在多个同名的函数或变量(详细解析),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2024-05-05
  • 深入理解GO语言的面向对象

    深入理解GO语言的面向对象

    相信很多人当初开发go语言的时候就是因为C++的特性太过于繁杂,从而使得很多C++的开发者因为C++的特性而头疼,go语言成功的精简了C++的特性,使其很简洁,很少的特性,却可以完成很多的事情。下面我们就来详细理解下GO语言的面向对象。
    2016-10-10
  • Golang迭代如何在Go中循环数据结构使用详解

    Golang迭代如何在Go中循环数据结构使用详解

    这篇文章主要为大家介绍了Golang迭代之如何在Go中循环数据结构使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10
  • Go使用Weighted实现资源管理

    Go使用Weighted实现资源管理

    这篇文章主要介绍了Go 语言中的 Weighted 并发原语,包括 Weighted 的基本使用方法、实现原理、使用注意事项等内容,感兴趣的小伙伴可以了解一下
    2023-06-06
  • Go使用database/sql操作数据库的教程指南

    Go使用database/sql操作数据库的教程指南

    Go 语言中,有一个名为database/sql的标准库,提供了统一的编程接口,使开发人员能够以一种通用的方式与各种关系型数据库进行交互,本文就来和大家讲讲它的具体操作吧
    2023-06-06

最新评论