GitHub - levigross/grequests: A Go "clone" of the great and famous Requests library (original) (raw)

GRequests

GRequests provides a clean wrapper around Go's net/http package. It mimics the convenience of the Python Requests library while keeping the power and safety of Go.

Join the chat at https://gitter.im/levigross/grequests

Features

Installation

go get github.com/levigross/grequests/v2

Quick start

package main

import ( "context" "log"

"github.com/levigross/grequests/v2"

)

func main() { resp, err := grequests.Get(context.Background(), "https://httpbin.org/get", grequests.UserAgent("MyAgent")) if err != nil { log.Fatal(err) }

var data map[string]any
if err := resp.JSON(&data); err != nil {
    log.Fatal(err)
}
log.Println(data)

}

Uploading a file

fd, _ := grequests.FileUploadFromDisk("testdata/file.txt") ro := &grequests.RequestOptions{ Files: fd, Data: map[string]string{"desc": "test"}, } resp, err := grequests.Post(context.Background(), "https://httpbin.org/post", grequests.FromRequestOptions(ro))

Using a session

sess := grequests.NewSession(nil) _, _ = sess.Get(context.Background(), "https://httpbin.org/cookies/set?one=two", nil) resp, _ := sess.Get(context.Background(), "https://httpbin.org/cookies", nil) log.Println(resp.String())

See the documentation for a full list of available options.

License

GRequests is licensed under the Apache License, Version 2.0. See LICENSE for details.