亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

golang高性能http請求fasthttp的示例分析

發布時間:2021-09-15 10:44:54 來源:億速云 閱讀:296 作者:小新 欄目:開發技術

這篇文章將為大家詳細講解有關golang高性能http請求fasthttp的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

fasthttp是golang下的一個http框架,顧名思義,與原生的http實現相比,它的特點在于快,按照官網的說法,它的客戶端和服務端性能比原生有了十倍的提升。

它的高性能主要源自于“復用”,通過服務協程和內存變量的復用,節省了大量資源分配的成本。

fasthttp 據說是目前golang性能最好的http庫,相對于自帶的net/http,性能說是有10倍的提升,具體介紹可以看看官方介紹:valyala/fasthttp

1,首先安裝fasthttp

go get -u github.com/valyala/fasthttp

2,簡單的一個get請求

package main

import (
    "github.com/valyala/fasthttp"
)

func main() {
    url := `http://httpbin.org/get`

    status, resp, err := fasthttp.Get(nil, url)
    if err != nil {
        fmt.Println("請求失敗:", err.Error())
        return
    }

    if status != fasthttp.StatusOK {
        fmt.Println("請求沒有成功:", status)
        return
    }

    fmt.Println(string(resp))
}

2,簡單的Post請求

func main() {
    url := `http://httpbin.org/post?key=123`
    
    // 填充表單,類似于net/url
    args := &fasthttp.Args{}
    args.Add("name", "test")
    args.Add("age", "18")

    status, resp, err := fasthttp.Post(nil, url, args)
    if err != nil {
        fmt.Println("請求失敗:", err.Error())
        return
    }

    if status != fasthttp.StatusOK {
        fmt.Println("請求沒有成功:", status)
        return
    }

    fmt.Println(string(resp))
}

比如有些API服務需要我們提供json body或者xml body也就是,Content-Type是application/json、application/xml或者其他類型

func main() {
    url := `http://httpbin.org/post?key=123`
    
    req := &fasthttp.Request{}
    req.SetRequestURI(url)
    
    requestBody := []byte(`{"request":"test"}`)
    req.SetBody(requestBody)

    // 默認是application/x-www-form-urlencoded
    req.Header.SetContentType("application/json")
    req.Header.SetMethod("POST")

    resp := &fasthttp.Response{}

    client := &fasthttp.Client{}
    if err := client.Do(req, resp);err != nil {
        fmt.Println("請求失敗:", err.Error())
        return
    }

    b := resp.Body()

    fmt.Println("result:\r\n", string(b))
}

翻閱文檔發現了他提供了幾個方法:AcquireRequest()AcquireResponse(),而且也推薦了在有性能要求的代碼中,通過 AcquireRequest 和 AcquireResponse 來獲取 req 和 resp。

func main() {
    url := `http://httpbin.org/post?key=123`

    req := fasthttp.AcquireRequest()
    defer fasthttp.ReleaseRequest(req) // 用完需要釋放資源
    
    // 默認是application/x-www-form-urlencoded
    req.Header.SetContentType("application/json")
    req.Header.SetMethod("POST")
    
    req.SetRequestURI(url)
    
    requestBody := []byte(`{"request":"test"}`)
    req.SetBody(requestBody)

    resp := fasthttp.AcquireResponse()
    defer fasthttp.ReleaseResponse(resp) // 用完需要釋放資源

    if err := fasthttp.Do(req, resp); err != nil {
        fmt.Println("請求失敗:", err.Error())
        return
    }

    b := resp.Body()

    fmt.Println("result:\r\n", string(b))
}

關于“golang高性能http請求fasthttp的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

从江县| 那坡县| 田阳县| 大方县| 雷波县| 凤阳县| 集安市| 巴塘县| 鹤峰县| 鄂托克旗| 黄平县| 松阳县| 九龙城区| 武夷山市| 贺州市| 凤庆县| 高雄市| 五指山市| 阿鲁科尔沁旗| 阳泉市| 邵武市| 德州市| 同心县| 江城| 喀喇沁旗| 原平市| 关岭| 凤山市| 固原市| 盈江县| 泸西县| 宜宾市| 绥化市| 张北县| 湘阴县| 黄山市| 贺兰县| 金乡县| 大厂| 集安市| 义马市|