go語言fasthttp使用實(shí)例小結(jié)
更新時間:2024年06月24日 14:29:19 作者:小雨喳
fasthttp?是一個使用?Go?語言開發(fā)的?HTTP?包,主打高性能,針對?HTTP?請求響應(yīng)流程中的?hot?path?代碼進(jìn)行了優(yōu)化,下面我們就來介紹go語言fasthttp使用實(shí)例小結(jié),感興趣的朋友跟隨小編一起看看吧
一、服務(wù)搭建和接收參數(shù)實(shí)例
package main
import (
"fmt"
"github.com/buaazp/fasthttprouter"
"github.com/valyala/fasthttp"
)
// index 頁
func Index(ctx *fasthttp.RequestCtx) {
ctx.Request.Header.Peek("userid")//獲取header頭參數(shù)
fmt.Fprint(ctx, "Welcome")
}
// 簡單路由頁
func Hello(ctx *fasthttp.RequestCtx) {
name:= ctx.UserValue("name").(string) //獲取路由參數(shù)name
fmt.Fprintf(ctx, "hello")
}
// 獲取GET請求json數(shù)據(jù)
func TestGet(ctx *fasthttp.RequestCtx) {
values := ctx.QueryArgs() // 使用 ctx.QueryArgs() 方法
fmt.Fprint(ctx, string(values.Peek("abc"))) // 不加string返回的byte數(shù)組
fmt.Fprint(ctx, string(ctx.FormValue("abc"))) // 獲取表單數(shù)據(jù)
}
// 獲取post的請求json數(shù)據(jù)
func TestPost(ctx *fasthttp.RequestCtx) {
postBody := ctx.PostBody() // 這兩行可以獲取PostBody數(shù)據(jù),文件上傳也有用
fmt.Fprint(ctx, string(postBody))
fmt.Fprint(ctx, string(ctx.FormValue("abc"))) // 獲取表單數(shù)據(jù)
}
func main() {
// 創(chuàng)建路由
router := fasthttprouter.New()
// 不同的路由執(zhí)行不同的處理函數(shù)
router.GET("/", Index)
router.GET("/hello/:name", Hello)
router.GET("/get", TestGet)
// post方法
router.POST("/post", TestPost)
// 啟動web服務(wù)器,監(jiān)聽 0.0.0.0:80
log.Fatal(fasthttp.ListenAndServe(":08", router.Handler))
}二、Post和Get請求實(shí)例
package main
import (
"fmt"
"github.com/valyala/fasthttp"
)
func main() {
req := &fasthttp.Request{} //相當(dāng)于獲取一個對象
req.SetRequestURI("www.baidu.com")//設(shè)置請求的url
bytes, err := json.Marshal(data)//data是請求數(shù)據(jù)
if err != nil {
return nil, err
}
req.SetBody(bytes)//存儲轉(zhuǎn)換好的數(shù)據(jù)
req.Header.SetContentType("application/json")//設(shè)置header頭信息
req.Header.SetMethod(method)//設(shè)置請求方法
resp := &fasthttp.Response{}//相應(yīng)結(jié)果的對象
client := &fasthttp.Client{}//發(fā)起請求的對象
if err := client.Do(req, resp); err != nil {
return nil, err
}
var param model.Data //定義好的結(jié)構(gòu)體用來存放相應(yīng)數(shù)據(jù)
err = json.Unmarshal(resp.Body(), ¶m)
if err != nil {
return nil, err
}
return param, nil
}到此這篇關(guān)于go語言fasthttp使用實(shí)例的文章就介紹到這了,更多相關(guān)Go fasthttp內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
幾個小技巧幫你實(shí)現(xiàn)Golang永久阻塞
Go 的運(yùn)行時的當(dāng)前設(shè)計,假定程序員自己負(fù)責(zé)檢測何時終止一個 goroutine 以及何時終止該程序。有時候我們需要的是使程序阻塞在這一行,本文就來詳細(xì)的介紹一下,感興趣的可以了解一下2021-12-12
在Go中動態(tài)替換SQL查詢中的日期參數(shù)的完整步驟
在處理數(shù)據(jù)庫查詢時,經(jīng)常需要根據(jù)不同的輸入條件動態(tài)地構(gòu)造SQL語句,尤其是在涉及日期范圍的查詢中,能夠根據(jù)實(shí)際需求調(diào)整查詢的起始和結(jié)束日期顯得尤為重要,在本文中,我將介紹如何在Go語言中實(shí)現(xiàn)動態(tài)替換SQL查詢中的日期參數(shù),需要的朋友可以參考下2024-11-11
詳解Go語言如何利用高階函數(shù)寫出優(yōu)雅的代碼
高階函數(shù)(Hiher-order?Function)定義為:滿足下列條件之一的函數(shù):接收一個或多個函數(shù)作為參數(shù);返回值是一個函數(shù)。本文為大家介紹了如何利用高階函數(shù)寫出優(yōu)雅的代碼,希望對大家有所幫助2023-01-01
詳解golang開發(fā)中http請求redirect的問題
這篇文章主要介紹了詳解golang開發(fā)中http請求redirect的問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10
Golang創(chuàng)建構(gòu)造函數(shù)的方法超詳細(xì)講解
構(gòu)造器一般面向?qū)ο笳Z言的典型特性,用于初始化變量。Go語言沒有任何具體構(gòu)造器,但我們能使用該特性去初始化變量。本文介紹不同類型構(gòu)造器的差異及其應(yīng)用場景2023-01-01

