首页 > 后端开发 > Golang > Grequest 的灵感来自 Python for GO 的 Request 库

Grequest 的灵感来自 Python for GO 的 Request 库

DDD
发布: 2025-01-07 07:18:44
原创
467 人浏览过

Grequest is inspired by the Request library for Python for GO

用于 http 请求的简单轻量级 golang 包。基于强大的net/http

Grequest 的灵感来自于 Python 和 PHP 中的 Guzzle 的 Request 库,目标是制作一个简单方便的库,用于在 go 中发出 http 请求

该库具有灵活的 API,其方法可返回指向库结构的指针,这允许您使用一系列方法以声明方式描述请求。

安装

go get github.com/lib4u/grequest
登录后复制

用法

简单的获取请求和获取字符串响应

req := app.Get("https://jsonplaceholder.typicode.com/todos/1").Do()
    response := req.Body().GetStrings()
    fmt.Println(response)
登录后复制

获取响应并将其写入 json 结构

type AutoGenerated struct {
    UserID    int    `json:"userId"`
    ID        int    `json:"id"`
    Title     string `json:"title"`
    Completed bool   `json:"completed"`
}
...
   var myJsonResponse AutoGenerated
    req := app.Get("https://jsonplaceholder.typicode.com/todos/1").Do()
    err := req.Body().GetWithJsonStruct(&myJsonResponse)
    if err != nil {
        fmt.Println("do ..")
    }
    fmt.Println(myJsonResponse.Title)
登录后复制

带有 json 负载正文的简单 post 请求并获取响应状态

data := LoginRequest{
        Username: "example",
        Password: "12345",
    }
    req := app.Post("https://example.site/login").Body().SetJson(data).Do()
    fmt.Println(req.Status().GetCode())
登录后复制

从响应中简单保存文件

// file will saved as ../files/image.png
app.Get("https://example.com/image.png").Do().Body().SaveFile()
//OR
app.Get("https://example.com/image.png").Do().Body().Path("/user/files").SaveFile()
//OR 
app.Get("https://example.com/image.png").Do().Body().ToFile("path/savedimage.png")
登录后复制

发送带有文件和文本字段的表单并设置标题

req := app.Post("https://example.site/form/")
    req.Header().Set("Client", "number_1")
    form := req.FormData().WithMultipart()
    form.AddField("first_name", "John")
    form.AddField("last_name", "Doe")
    form.AddFile("photo", "my_photo.png")
    form.AddFile("documents", "example.txt")
    form.AddFile("documents", "example2.txt")
    form.Push()
    req.Do()
    .....
登录后复制

经过身份验证的请求

//With basic auth
req := app.Post("https://example.site/secret)
    req.Header().Set("Client", "number_1")
    req.Auth().SetBasic("user", "password")
    req.Do()
    ...
    //Sets bearer token
    req := app.Post("https://example.site/secret)
    req.Header().Set("Client", "number_1")
    req.Auth().SetBearer("myToken")
    req.Do()
登录后复制

使用 cookie

//Save cookie to file 
//By default this saved in  cookies/example.site/cookies.json
req := app.Post("https://example.site/cookies")
    req.Cookie().Save()
    ...
    // Load saved cookies form cookies/example.site/cookies.json
    reqWithCookie := app.Post("https://example.site/cookies")
    reqWithCookie.Cookie().Load()
    reqWithCookie.Do()
    ...
登录后复制

以上是Grequest 的灵感来自 Python for GO 的 Request 库的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:dev.to
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板