go語言fasthttp使用實例小結(jié)
更新時間:2024年06月24日 14:29:19 作者:小雨喳
fasthttp?是一個使用?Go?語言開發(fā)的?HTTP?包,主打高性能,針對?HTTP?請求響應(yīng)流程中的?hot?path?代碼進(jìn)行了優(yōu)化,下面我們就來介紹go語言fasthttp使用實例小結(jié),感興趣的朋友跟隨小編一起看看吧
一、服務(wù)搭建和接收參數(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請求實例
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使用實例的文章就介紹到這了,更多相關(guān)Go fasthttp內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
在Go中動態(tài)替換SQL查詢中的日期參數(shù)的完整步驟
在處理數(shù)據(jù)庫查詢時,經(jīng)常需要根據(jù)不同的輸入條件動態(tài)地構(gòu)造SQL語句,尤其是在涉及日期范圍的查詢中,能夠根據(jù)實際需求調(diào)整查詢的起始和結(jié)束日期顯得尤為重要,在本文中,我將介紹如何在Go語言中實現(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-10Golang創(chuàng)建構(gòu)造函數(shù)的方法超詳細(xì)講解
構(gòu)造器一般面向?qū)ο笳Z言的典型特性,用于初始化變量。Go語言沒有任何具體構(gòu)造器,但我們能使用該特性去初始化變量。本文介紹不同類型構(gòu)造器的差異及其應(yīng)用場景2023-01-01