README
A simple wrapper around the default Go http client optimized for ease-of-use
This package wraps the Go standard http client, providing a simplified interaction model using method chaining and additional capabilities such as optional in-flow validation against an OpenAPI specification.
Features
- Simple, method chaining based interface for HTTP client requests
- Simulation of request delays (optional)
- Validation of request + response against OpenAPI specification (optional)
- Customization of HTTP client via functional parameter
Installation
go get -u github.com/fako1024/httpc
Examples
Perform simple HTTP GET request
err := httpc.New("GET", "http://example.org").Run()
if err != nil {
log.Fatalf("Error performing GET request: %s", err)
}
Perform HTTPS POST request with a simple body, disabling certificate validation and parsing the response
err := httpc.New("POST", "https://example.org").
SkipCertificateVerification().
Body([]byte{0x1, 0x2}).
ParseFn(func(resp *http.Response) error {
// Read the binary data from the response body
bodyBytes, err := ioutil.ReadAll(resp.Body)
if err != nil {
return fmt.Errorf("Failed to read response body: %s", err)
}
log.Printf("Read body content: %s\n", string(bodyBytes))
return nil
}).Run()
if err != nil {
log.Fatalf("Error performing POST request: %s", err)
}
Perform HTTPS GET request (with query parameters + headers), validating request and response against OpenAPIv3 specification
openAPIFileData, err := ioutil.ReadFile("/tmp/openapi.json")
if err != nil {
log.Fatalf("Error opening OpenAPI specification file: %s", err)
}
err = httpc.New("GET", "https://example.org").
SkipCertificateVerification().
QueryParams(httpc.Params{
"param": "test",
}).
Headers(httpc.Params{
"X-HEADER-TEST": "test",
}).
OpenAPIValidationFileData(openAPIFileData).
Run()
if err != nil {
log.Fatalf("Error performing POST request: %s", err)
}
Documentation
Index ¶
- type Params
- type Request
- func (r *Request) AcceptedResponseCodes(acceptedResponseCodes []int) *Request
- func (r *Request) Body(body []byte) *Request
- func (r *Request) ClientCertificates(clientCert, clientKey, caCert []byte) (*Request, error)
- func (r *Request) ClientCertificatesFromFiles(certFile, keyFile, caFile string) (*Request, error)
- func (r *Request) Delay(delay time.Duration) *Request
- func (r *Request) GetBody() []byte
- func (r *Request) GetMethod() string
- func (r *Request) GetURI() string
- func (r *Request) Headers(headers Params) *Request
- func (r *Request) HostName(host string) *Request
- func (r *Request) ModifyHTTPClient(fn func(c *http.Client)) *Request
- func (r *Request) OpenAPIValidationFileData(fileData []byte) *Request
- func (r *Request) ParseFn(parseFn func(resp *http.Response) error) *Request
- func (r *Request) QueryParams(queryParams Params) *Request
- func (r *Request) Run() error
- func (r *Request) SkipCertificateVerification() *Request
- func (r *Request) Timeout(timeout time.Duration) *Request
Constants ¶
Variables ¶
Functions ¶
Types ¶
type Request ¶
type Request struct {
// contains filtered or unexported fields
}
Request represents a generic web request for quick execution, providing access to method, URL parameters, headers, the body and an optional 1st class function used to parse the result
func (*Request) AcceptedResponseCodes ¶
AcceptedResponseCodes defines a set of accepted HTTP response codes for the client call
func (*Request) ClientCertificates ¶
ClientCertificates sets client certificates from memory
func (*Request) ClientCertificatesFromFiles ¶
ClientCertificatesFromFiles sets client certificates from files
func (*Request) ModifyHTTPClient ¶
ModifyHTTPClient executes any function / allows setting parameters of the underlying HTTP client before the actual request is made
func (*Request) OpenAPIValidationFileData ¶
OpenAPIValidationFileData sets an OpenAPI validation file for the client call using a byte slice (containing the raw JSON file data)
func (*Request) QueryParams ¶
QueryParams sets the query parameters for the client call
func (*Request) SkipCertificateVerification ¶
SkipCertificateVerification will accept any SSL certificate