zoukankan      html  css  js  c++  java
  • 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())
    
    }
  • 相关阅读:
    Knative Serving 进阶: Knative Serving SDK 开发实践
    从求生存到修体系,我在阿里找到了技术人的成长模式
    K8s 学习者绝对不能错过的最全知识图谱(内含 56个知识点链接)
    P1197 [JSOI2008]星球大战
    P1311 选择客栈
    P2822 组合数问题
    贪心 加工生产调度
    P3375 【模板】KMP字符串匹配
    P1025 数的划分
    P1019 单词接龙
  • 原文地址:https://www.cnblogs.com/kgdxpr/p/13130427.html
Copyright © 2011-2022 走看看