Categorygithub.com/wenerme/go-req
modulepackage
0.10.1
Repository: https://github.com/wenerme/go-req.git
Documentation: pkg.go.dev

# README

go-req

GoDoc Build Status Coverage Status Go Report Card

Declarative golang HTTP client

package req_test

import (
    "fmt"
    "github.com/wenerme/go-req"
    "net/http"
)

func ExampleRequest() {
    // reusable client
    client := req.Request{
        BaseURL: "https://httpbin.org",
        Options: []interface{}{req.JSONEncode, req.JSONDecode},
    }
  
    // dump request and response with body
    client = client.WithHook(req.DebugHook(&req.DebugOptions{Body: true}))
    
    // send request with declarative override
    var out PostResponse
    var r *http.Response
    err := client.With(req.Request{
        Method: http.MethodPost,
        URL: "/post",
        Body: HelloRequest{
          Name: "go-req",
        },
    }).Fetch(&out,&r)
    if err != nil {
      panic(err)
    }
    // print go-req
    fmt.Println(out.JSON.Name)
    // print 200
    fmt.Println(r.StatusCode)
}

type HelloRequest struct {
  Name string
}
type HelloResponse struct {
  Name string
}
type PostResponse struct {
  JSON HelloResponse `json:"json"`
}

Used by

# Functions

DebugHook dump http.Request and http.Response.
FromContext get Request from context.Context.
NewContext with Request.
UseRoundTripper use customized http.RoundTripper for Request.
ValuesOf convert anything to url.Values.

# Constants

RequestContextKey for Request instance.

# Variables

FormEncode encode use ValuesOf.
JSONDecode decode use json.Unmarshal.
JSONEncode encode use json.Marshal, add Content-Type.
No description provided by the author

# Structs

DebugOptions options for DebugHook.
Extension of Request.
Hook phases for Extension.
Request is declarative HTTP client instance.