Documentation
¶
Index ¶
- func Chain(base http.RoundTripper, mw ...func(http.RoundTripper) http.RoundTripper) *chain
- func LogRequests(next http.RoundTripper) http.RoundTripper
- func Retry(baseTransport http.RoundTripper, maxRetries int) func(http.RoundTripper) http.RoundTripper
- func SetHeader(header string, value string) func(http.RoundTripper) http.RoundTripper
- func SetHeaderFunc(header string, fn func(req *http.Request) string) func(http.RoundTripper) http.RoundTripper
- type RoundTripFunc
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Chain ¶
func Chain(base http.RoundTripper, mw ...func(http.RoundTripper) http.RoundTripper) *chain
Chain wraps given base RoundTripper, which is used to make HTTP requests (e.g. http.DefaultTransport) with RoundTripper middlewares.
The middlewares can print, debug or modify request/response headers, cookies, context timeouts etc.
Note: Per stdlib docs, RoundTrip should not modify the original request, except for consuming and closing the request's body. Thus, it's advised to clone the original request before modifying it, e.g. golang.org/x/oauth2: https://cs.opensource.google/go/x/oauth2/+/refs/tags/v0.13.0:transport.go;l=50.
A typical use case is to set User-Agent, Authorization or TraceID headers:
authClient := http.Client{
Transport: transport.Chain(
http.DefaultTransport,
transport.SetHeader("User-Agent", userAgent),
transport.SetHeader("Authorization", authHeader),
transport.SetHeader("x-extra", "value"),
transport.TraceID,
),
Timeout: 15 * time.Second,
}
Or debug all outgoing requests in a debug mode:
http.DefaultTransport = transport.Chain( http.DefaultTransport, transport.LogRequests, )
func LogRequests ¶
func LogRequests(next http.RoundTripper) http.RoundTripper
func Retry ¶
func Retry(baseTransport http.RoundTripper, maxRetries int) func(http.RoundTripper) http.RoundTripper
func SetHeader ¶
func SetHeader(header string, value string) func(http.RoundTripper) http.RoundTripper
func SetHeaderFunc ¶
func SetHeaderFunc(header string, fn func(req *http.Request) string) func(http.RoundTripper) http.RoundTripper
Types ¶
type RoundTripFunc ¶
RoundTripFunc, similar to http.HandlerFunc, is an adapter to allow the use of ordinary functions as http.RoundTrippers.