golang fasthttp

安装

go get -u github.com/valyala/fasthttp

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))
}

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))
}

ES_DSL

package main

import (
    "encoding/json"
    "fmt"
    "github.com/tidwall/gjson"
    "github.com/valyala/fasthttp"
    "reflect"
)

func main() {

    args := `
        {
            "size": 0,
            "query": {
                "bool": {
                    "must": [
                        {
                            "term": {
                                "identity_id": "5"
                            }
                        },
                        {
                            "term": {
                                "b_use": "1"
                            }
                        },
                        {
                            "terms": {
                                "org_id": [
                                    "AC0C9659-C4A5-48EE-AD4C-C0CC210E021C",
                                    "625036FB-968C-4777-ABAF-C9D7617F5B0E",
                                    "2E4D5752-185E-4B40-A0EF-380FB0821421",
                                    "05A1B886-05F4-48D5-B1F7-95631C70B8C5"
                                ]
                            }
                        }
                    ]
                }
            },
            "aggs": {
                "person": {
                    "terms": {
                        "field": "org_id",
                        "size": 500
                    }
                }
            }
        }
    `

    url := "http://10.10.14.222:9200/t_sys_loginperson/_search"

    //有性能要求的代码中,推荐通过 AcquireRequest 和 AcquireResponse 来获取 req 和 resp 。

    req := fasthttp.AcquireRequest()
    defer fasthttp.ReleaseRequest(req) // 用完需要释放资源

    req.Header.SetContentType("application/json")
    req.Header.SetMethod("POST")

    req.SetRequestURI(url)

    requestBody := []byte(args)
    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:
", string(b))

    value := gjson.Get(string(b), "aggregations.person.buckets")

    fmt.Println("result1:
",value.String())

}
原文地址:https://www.cnblogs.com/kgdxpr/p/13130427.html