GitHub - monaco-io/request: go request, go http client (original) (raw)

Stargazers over time

Stargazers over time

GoDoc codecov Release TODOs License

HTTP Client for golang, Inspired by Javascript-axios Python-request. If you have experience about axios or requests, you will love it. No 3rd dependency.

Features

Installing

go mod:

go get github.com/monaco-io/request

Methods

Example

POST

package main

import ( "github.com/monaco-io/request" )

func main() { var body = struct { A string B int }{A: "A", B: 1} var result interface{}

c := request.Client{
    URL:    "https://google.com",
    Method: "POST",
    Query: map[string]string{"hello": "world"},
    JSON:   body,
}
resp := c.Send().Scan(&result)
if !resp.OK(){
    // handle error
    log.Println(resp.Error())
}

// str := resp.String()
// bytes := resp.Bytes()

POST with local files

package main

import ( "github.com/monaco-io/request" )

func main() { c := request.Client{ URL: "https://google.com", Method: "POST", Query: map[string]string{"hello": "world"}, MultipartForm: MultipartForm{ Fields: map[string]string{"a": "1"}, Files: []string{"doc.txt"}, }, } resp := c.Send().Scan(&result) ...

POST step by step

package main

import ( "github.com/monaco-io/request" )

func main() { var response interface{}

resp := request.
    New().
    POST("http://httpbin.org/post").
    AddHeader(map[string]string{"Google": "google"}).
    AddBasicAuth("google", "google").
    AddURLEncodedForm(map[string]string{"data": "google"}).
    Send().
    Scan(&response)
...

POST with context (1/2)

package main

import ( "github.com/monaco-io/request" "context" )

func main() { c := request.Client{ Context: context.Background(), URL: "https://google.com", Method: "POST", BasicAuth: request.BasicAuth{ Username: "google", Password: "google", }, } resp := c.Send() ...

POST with context (2/2)

package main

import ( "github.com/monaco-io/request" "context" )

func main() { var response interface{}

resp := request.
    NewWithContext(context.TODO()).
    POST("http://httpbin.org/post").
    AddHeader(map[string]string{"Google": "google"}).
    AddBasicAuth("google", "google").
    AddURLEncodedForm(map[string]string{"data": "google"}).
    Send().
    Scan(&response)
...

Authorization

package main

import ( "github.com/monaco-io/request" )

func main() { c := request.Client{ URL: "https://google.com", Method: "POST", BasicAuth: request.BasicAuth{ Username: "google", Password: "google", }, } resp := c.Send() }

Timeout

package main

import ( "github.com/monaco-io/request" )

func main() { c := request.Client{ URL: "https://google.com", Method: "POST", Timeout: time.Second*10, } }

Cookies

package main

import ( "github.com/monaco-io/request" )

func main() { c := request.Client{ URL: "https://google.com", CookiesMap: map[string]string{ "cookie_name": "cookie_value", } } }

TLS

package main

import (

"github.com/monaco-io/request"

)

func main() { c := request.Client{ URL: "https://google.com", TLSConfig: &tls.Config{InsecureSkipVerify: true}, } }

License

MIT