go语言fasthttp使用实例小结
作者:小雨喳
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(), ¶m) if err != nil { return nil, err } return param, nil }
到此这篇关于go语言fasthttp使用实例的文章就介绍到这了,更多相关Go fasthttp内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!