Documentation ¶
Overview ¶
Package requester wraps http.Client with a chain of middleware.RoundTripperHandler. Each RoundTripperHandler implements a part of functionality expanding http.Request oar altering the flow in some way. Some middlewares set headers, some add logging and caching, some limit concurrency. User can provide custom middlewares.
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Requester ¶
type Requester struct {
// contains filtered or unexported fields
}
Requester provides a wrapper for the standard http.Do request.
func New ¶
func New(client http.Client, middlewares ...middleware.RoundTripperHandler) *Requester
New creates requester with defaults
Example ¶
// make requester, set JSON headers middleware rq := New(http.Client{Timeout: 3 * time.Second}, middleware.JSON) // add auth header, user agent and a custom X-Auth header middlewared rq.Use( middleware.Header("X-Auth", "very-secret-key"), middleware.Header("User-Agent", "test-requester"), middleware.BasicAuth("user", "password"), )
Output:
func (*Requester) Client ¶
Client returns http.Client with all middlewares injected
Example ¶
// make new requester with some middlewares rq := New(http.Client{Timeout: 3 * time.Second}, middleware.JSON, middleware.Header("User-Agent", "test-requester"), middleware.BasicAuth("user", "password"), middleware.MaxConcurrent(4), ) client := rq.Client() // get http.Client resp, err := client.Get("http://example.com") if err != nil { panic(err) } log.Printf("status: %s", resp.Status)
Output:
func (*Requester) Do ¶
Do runs http request with optional middleware handlers wrapping the request
Example ¶
rq := New(http.Client{Timeout: 3 * time.Second}) // make new requester // add logger, auth header, user agent and JSON headers rq.Use( middleware.Header("X-Auth", "very-secret-key"), logger.New(logger.Std, logger.Prefix("REST"), logger.WithHeaders).Middleware, // uses std logger middleware.Header("User-Agent", "test-requester"), middleware.JSON, ) // create http.Request req, err := http.NewRequest("GET", "http://example.com", http.NoBody) if err != nil { panic(err) } // Send request and get reposnse resp, err := rq.Do(req) if err != nil { panic(err) } log.Printf("status: %s", resp.Status)
Output:
func (*Requester) Use ¶
func (r *Requester) Use(middlewares ...middleware.RoundTripperHandler)
Use adds middleware(s) to the requester chain
func (*Requester) With ¶
func (r *Requester) With(middlewares ...middleware.RoundTripperHandler) *Requester
With makes a new Requested with inherited middlewares and add passed middleware(s) to the chain
Example ¶
rq1 := New(http.Client{Timeout: 3 * time.Second}, middleware.JSON) // make a requester with JSON middleware // make another requester inherited from rq1 with extra middlewares rq2 := rq1.With(middleware.BasicAuth("user", "password"), middleware.MaxConcurrent(4)) // create http.Request req, err := http.NewRequest("GET", "http://example.com", http.NoBody) if err != nil { panic(err) } // send request with rq1 (JSON headers only) resp, err := rq1.Do(req) if err != nil { panic(err) } log.Printf("status1: %s", resp.Status) // send request with rq2 (JSON headers, basic auth and limiteted concurrecny) resp, err = rq2.Do(req) if err != nil { panic(err) } log.Printf("status2: %s", resp.Status)
Output:
Directories ¶
Path | Synopsis |
---|---|
Package middleware provides middlewares for htt.Client as RoundTripperHandler
|
Package middleware provides middlewares for htt.Client as RoundTripperHandler |
cache
Package cache implements middleware for response caching.
|
Package cache implements middleware for response caching. |
logger
Package logger implements middleware for request logging.
|
Package logger implements middleware for request logging. |