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())
    
    }
  • 相关阅读:
    在Linux下OpenCV的下载和编译
    安装GDB-ImageWatch ,在QT中查看图像
    linux下对qt编写的程序进行部署
    GOQTTemplate简单介绍
    寻找激光的交叉点
    基于opencv和QT的摄像头采集代码( GoQTtemplate3持续更新)
    图像处理工程师的要求研究
    如何将QT的pro图标修改的更显著一些
    快速阅读《QT5.9 c++开发指南》2
    小米盒子连接老式电脑显示器(VGA接口)
  • 原文地址:https://www.cnblogs.com/kgdxpr/p/13130427.html
Copyright © 2011-2022 走看看