Documentation
¶
Index ¶
- Constants
- Variables
- func CanonicalMIMEHeaderKey(s string) string
- func ProxyFromEnvironment(req *http.Request) (*url.URL, error)
- func ProxyURL(fixedURL *url.URL) func(*http.Request) (*url.URL, error)
- func SetDefaultClient(c *Client)
- type Client
- func C() *Client
- func DefaultClient() *Client
- func DevMode() *Client
- func DisableAutoDecode(disable bool) *Client
- func DisableAutoReadResponse(disable bool) *Client
- func DisableCompression(disable bool) *Client
- func DisableKeepAlives(disable bool) *Client
- func EnableAutoDecodeAllType() *Client
- func EnableDebug(enable bool) *Client
- func EnableDump(enable bool) *Client
- func EnableDumpAll() *Client
- func EnableDumpAsync() *Client
- func EnableDumpOnlyBody() *Client
- func EnableDumpOnlyHeader() *Client
- func EnableDumpOnlyRequest() *Client
- func EnableDumpOnlyResponse() *Client
- func EnableDumpTo(output io.Writer) *Client
- func EnableDumpToFile(filename string) *Client
- func NewClient() *Client
- func OnAfterResponse(m ResponseMiddleware) *Client
- func OnBeforeRequest(m RequestMiddleware) *Client
- func SetCert(certs ...tls.Certificate) *Client
- func SetCertFromFile(certFile, keyFile string) *Client
- func SetCommonBasicAuth(username, password string) *Client
- func SetCommonBearerAuthToken(token string) *Client
- func SetCommonCookie(hc *http.Cookie) *Client
- func SetCommonCookies(cs []*http.Cookie) *Client
- func SetCommonHeader(key, value string) *Client
- func SetCommonHeaders(hdrs map[string]string) *Client
- func SetCommonQueryParam(key, value string) *Client
- func SetCommonQueryParams(params map[string]string) *Client
- func SetCommonQueryString(query string) *Client
- func SetDumpOptions(opt *DumpOptions) *Client
- func SetLogger(log Logger) *Client
- func SetOutputDirectory(dir string) *Client
- func SetProxy(proxy func(*http.Request) (*urlpkg.URL, error)) *Client
- func SetProxyURL(proxyUrl string) *Client
- func SetRedirectPolicy(policies ...RedirectPolicy) *Client
- func SetResponseOptions(opt *ResponseOptions) *Client
- func SetRootCertFromFile(pemFiles ...string) *Client
- func SetRootCertFromString(pemContent string) *Client
- func SetScheme(scheme string) *Client
- func SetTLSClientConfig(conf *tls.Config) *Client
- func SetTimeout(d time.Duration) *Client
- func SetUserAgent(userAgent string) *Client
- func (c *Client) Clone() *Client
- func (c *Client) DevMode() *Client
- func (c *Client) DisableAutoDecode(disable bool) *Client
- func (c *Client) DisableAutoReadResponse(disable bool) *Client
- func (c *Client) DisableCompression(disable bool) *Client
- func (c *Client) DisableKeepAlives(disable bool) *Client
- func (c *Client) EnableAutoDecodeAllType() *Client
- func (c *Client) EnableDebug(enable bool) *Client
- func (c *Client) EnableDump(enable bool) *Client
- func (c *Client) EnableDumpAll() *Client
- func (c *Client) EnableDumpAsync() *Client
- func (c *Client) EnableDumpOnlyBody() *Client
- func (c *Client) EnableDumpOnlyHeader() *Client
- func (c *Client) EnableDumpOnlyRequest() *Client
- func (c *Client) EnableDumpOnlyResponse() *Client
- func (c *Client) EnableDumpTo(output io.Writer) *Client
- func (c *Client) EnableDumpToFile(filename string) *Client
- func (c *Client) GetDumpOptions() *DumpOptions
- func (c *Client) GetResponseOptions() *ResponseOptions
- func (c *Client) NewRequest() *Request
- func (c *Client) OnAfterResponse(m ResponseMiddleware) *Client
- func (c *Client) OnBeforeRequest(m RequestMiddleware) *Client
- func (c *Client) R() *Request
- func (c *Client) SetCert(certs ...tls.Certificate) *Client
- func (c *Client) SetCertFromFile(certFile, keyFile string) *Client
- func (c *Client) SetCommonBasicAuth(username, password string) *Client
- func (c *Client) SetCommonBearerAuthToken(token string) *Client
- func (c *Client) SetCommonCookie(hc *http.Cookie) *Client
- func (c *Client) SetCommonCookies(cs []*http.Cookie) *Client
- func (c *Client) SetCommonHeader(key, value string) *Client
- func (c *Client) SetCommonHeaders(hdrs map[string]string) *Client
- func (c *Client) SetCommonQueryParam(key, value string) *Client
- func (c *Client) SetCommonQueryParams(params map[string]string) *Client
- func (c *Client) SetCommonQueryString(query string) *Client
- func (c *Client) SetDumpOptions(opt *DumpOptions) *Client
- func (c *Client) SetLogger(log Logger) *Client
- func (c *Client) SetOutputDirectory(dir string) *Client
- func (c *Client) SetProxy(proxy func(*http.Request) (*urlpkg.URL, error)) *Client
- func (c *Client) SetProxyURL(proxyUrl string) *Client
- func (c *Client) SetRedirectPolicy(policies ...RedirectPolicy) *Client
- func (c *Client) SetResponseOptions(opt *ResponseOptions) *Client
- func (c *Client) SetRootCertFromFile(pemFiles ...string) *Client
- func (c *Client) SetRootCertFromString(pemContent string) *Client
- func (c *Client) SetScheme(scheme string) *Client
- func (c *Client) SetTLSClientConfig(conf *tls.Config) *Client
- func (c *Client) SetTimeout(d time.Duration) *Client
- func (c *Client) SetUserAgent(userAgent string) *Client
- type DumpOptions
- type Logger
- type RedirectPolicy
- func AllowedDomainRedirectPolicy(hosts ...string) RedirectPolicy
- func AllowedHostRedirectPolicy(hosts ...string) RedirectPolicy
- func MaxRedirectPolicy(noOfRedirect int) RedirectPolicy
- func NoRedirectPolicy() RedirectPolicy
- func SameDomainRedirectPolicy() RedirectPolicy
- func SameHostRedirectPolicy() RedirectPolicy
- type Request
- func NewRequest() *Request
- func R() *Request
- func SetBasicAuth(username, password string) *Request
- func SetBearerAuthToken(token string) *Request
- func SetBody(body interface{}) *Request
- func SetBodyBytes(body []byte) *Request
- func SetBodyJsonBytes(body []byte) *Request
- func SetBodyJsonMarshal(v interface{}) *Request
- func SetBodyJsonString(body string) *Request
- func SetBodyString(body string) *Request
- func SetContentType(contentType string) *Request
- func SetCookie(hc *http.Cookie) *Request
- func SetCookies(rs []*http.Cookie) *Request
- func SetError(error interface{}) *Request
- func SetHeader(key, value string) *Request
- func SetHeaders(hdrs map[string]string) *Request
- func SetOutput(output io.WriteCloser) *Request
- func SetOutputFile(file string) *Request
- func SetPathParam(key, value string) *Request
- func SetPathParams(params map[string]string) *Request
- func SetQueryParam(key, value string) *Request
- func SetQueryParams(params map[string]string) *Request
- func SetQueryString(query string) *Request
- func SetResult(result interface{}) *Request
- func (r *Request) Delete(url string) (*Response, error)
- func (r *Request) Get(url string) (*Response, error)
- func (r *Request) Head(url string) (*Response, error)
- func (r *Request) MustDelete(url string) *Response
- func (r *Request) MustGet(url string) *Response
- func (r *Request) MustHead(url string) *Response
- func (r *Request) MustOptions(url string) *Response
- func (r *Request) MustPatch(url string) *Response
- func (r *Request) MustPost(url string) *Response
- func (r *Request) MustPut(url string) *Response
- func (r *Request) Options(url string) (*Response, error)
- func (r *Request) Patch(url string) (*Response, error)
- func (r *Request) Post(url string) (*Response, error)
- func (r *Request) Put(url string) (*Response, error)
- func (r *Request) Send(method, url string) (*Response, error)
- func (r *Request) SetBasicAuth(username, password string) *Request
- func (r *Request) SetBearerAuthToken(token string) *Request
- func (r *Request) SetBody(body interface{}) *Request
- func (r *Request) SetBodyBytes(body []byte) *Request
- func (r *Request) SetBodyJsonBytes(body []byte) *Request
- func (r *Request) SetBodyJsonMarshal(v interface{}) *Request
- func (r *Request) SetBodyJsonString(body string) *Request
- func (r *Request) SetBodyString(body string) *Request
- func (r *Request) SetContentType(contentType string) *Request
- func (r *Request) SetCookie(hc *http.Cookie) *Request
- func (r *Request) SetCookies(rs []*http.Cookie) *Request
- func (r *Request) SetError(error interface{}) *Request
- func (r *Request) SetHeader(key, value string) *Request
- func (r *Request) SetHeaders(hdrs map[string]string) *Request
- func (r *Request) SetOutput(output io.WriteCloser) *Request
- func (r *Request) SetOutputFile(file string) *Request
- func (r *Request) SetPathParam(key, value string) *Request
- func (r *Request) SetPathParams(params map[string]string) *Request
- func (r *Request) SetQueryParam(key, value string) *Request
- func (r *Request) SetQueryParams(params map[string]string) *Request
- func (r *Request) SetQueryString(query string) *Request
- func (r *Request) SetResult(result interface{}) *Request
- type RequestMiddleware
- type Response
- func Delete(url string) (*Response, error)
- func Get(url string) (*Response, error)
- func Head(url string) (*Response, error)
- func MustDelete(url string) *Response
- func MustGet(url string) *Response
- func MustHead(url string) *Response
- func MustOptions(url string) *Response
- func MustPatch(url string) *Response
- func MustPost(url string) *Response
- func MustPut(url string) *Response
- func Options(url string) (*Response, error)
- func Patch(url string) (*Response, error)
- func Post(url string) (*Response, error)
- func Put(url string) (*Response, error)
- func (r *Response) Bytes() ([]byte, error)
- func (r *Response) Error() interface{}
- func (r *Response) GetContentType() string
- func (r *Response) IsError() bool
- func (r *Response) IsSuccess() bool
- func (r *Response) MustBytes() []byte
- func (r *Response) MustString() string
- func (r *Response) MustUnmarshal(v interface{})
- func (r *Response) MustUnmarshalJson(v interface{})
- func (r *Response) MustUnmarshalXml(v interface{})
- func (r *Response) Result() interface{}
- func (r *Response) String() (string, error)
- func (r *Response) Unmarshal(v interface{}) error
- func (r *Response) UnmarshalJson(v interface{}) error
- func (r *Response) UnmarshalXml(v interface{}) error
- type ResponseMiddleware
- type ResponseOptions
- type Transport
- func (t *Transport) CancelRequest(req *http.Request)deprecated
- func (t *Transport) Clone() *Transport
- func (t *Transport) CloseIdleConnections()
- func (t *Transport) DisableDump()
- func (t *Transport) EnableDump(opt *DumpOptions)
- func (t *Transport) RegisterProtocol(scheme string, rt http.RoundTripper)
- func (t *Transport) RoundTrip(req *http.Request) (resp *http.Response, err error)
Constants ¶
const ( CONTENT_TYPE_APPLICATION_JSON_UTF8 = "application/json; charset=UTF-8" CONTENT_TYPE_APPLICATION_XML_UTF8 = "application/xml; charset=UTF-8" CONTENT_TYPE_TEXT_XML_UTF8 = "text/xml; charset=UTF-8" CONTENT_TYPE_TEXT_HTML_UTF8 = "text/html; charset=UTF-8" CONTENT_TYPE_TEXT_PLAIN_UTF8 = "text/plain; charset=UTF-8" )
const DefaultMaxIdleConnsPerHost = 2
DefaultMaxIdleConnsPerHost is the default value of Transport's MaxIdleConnsPerHost.
Variables ¶
var ErrBodyReadAfterClose = errors.New("http: invalid Read on closed Body")
ErrBodyReadAfterClose is returned when reading a Request or Response Body after the body has been closed. This typically happens when the body is read after an HTTP Handler calls WriteHeader or Write on its ResponseWriter.
var ErrLineTooLong = internal.ErrLineTooLong
ErrLineTooLong is returned when reading request or response bodies with malformed chunked encoding.
var NoBody = noBody{}
NoBody is an io.ReadCloser with no bytes. Read always returns EOF and Close always returns nil. It can be used in an outgoing client request to explicitly signal that a request has zero bytes. An alternative, however, is to simply set Request.Body to nil.
Functions ¶
func CanonicalMIMEHeaderKey ¶
CanonicalMIMEHeaderKey returns the canonical format of the MIME header key s. The canonicalization converts the first letter and any letter following a hyphen to upper case; the rest are converted to lowercase. For example, the canonical key for "accept-encoding" is "Accept-Encoding". MIME header keys are assumed to be ASCII only. If s contains a space or invalid header field bytes, it is returned without modifications.
func ProxyFromEnvironment ¶
ProxyFromEnvironment returns the URL of the proxy to use for a given request, as indicated by the environment variables HTTP_PROXY, HTTPS_PROXY and NO_PROXY (or the lowercase versions thereof). HTTPS_PROXY takes precedence over HTTP_PROXY for https requests.
The environment values may be either a complete URL or a "host[:port]", in which case the "http" scheme is assumed. The schemes "http", "https", and "socks5" are supported. An error is returned if the value is a different form.
A nil URL and nil error are returned if no proxy is defined in the environment, or a proxy should not be used for the given request, as defined by NO_PROXY.
As a special case, if req.URL.Host is "localhost" (with or without a port number), then a nil URL and nil error will be returned.
func ProxyURL ¶
ProxyURL returns a proxy function (for use in a Transport) that always returns the same URL.
func SetDefaultClient ¶
func SetDefaultClient(c *Client)
SetDefaultClient override the global default Client.
Types ¶
type Client ¶
type Client struct {
HostURL string
PathParams map[string]string
QueryParams urlpkg.Values
Headers http.Header
Cookies []*http.Cookie
JSONMarshal func(v interface{}) ([]byte, error)
JSONUnmarshal func(data []byte, v interface{}) error
XMLMarshal func(v interface{}) ([]byte, error)
XMLUnmarshal func(data []byte, v interface{}) error
Debug bool
// contains filtered or unexported fields
}
Client is the req's http client.
func DisableAutoDecode ¶
func DisableAutoReadResponse ¶
func DisableCompression ¶
func DisableKeepAlives ¶
func EnableAutoDecodeAllType ¶
func EnableAutoDecodeAllType() *Client
func EnableDebug ¶
func EnableDump ¶
func EnableDumpAll ¶
func EnableDumpAll() *Client
func EnableDumpAsync ¶
func EnableDumpAsync() *Client
func EnableDumpOnlyBody ¶
func EnableDumpOnlyBody() *Client
func EnableDumpOnlyHeader ¶
func EnableDumpOnlyHeader() *Client
func EnableDumpOnlyRequest ¶
func EnableDumpOnlyRequest() *Client
func EnableDumpOnlyResponse ¶
func EnableDumpOnlyResponse() *Client
func EnableDumpTo ¶
func EnableDumpToFile ¶
func OnAfterResponse ¶
func OnAfterResponse(m ResponseMiddleware) *Client
func OnBeforeRequest ¶
func OnBeforeRequest(m RequestMiddleware) *Client
func SetCert ¶
func SetCert(certs ...tls.Certificate) *Client
func SetCertFromFile ¶
func SetCommonBasicAuth ¶
func SetCommonCookie ¶
func SetCommonCookies ¶
func SetCommonHeader ¶
func SetCommonHeaders ¶
func SetCommonQueryParam ¶
func SetCommonQueryParams ¶
func SetCommonQueryString ¶
func SetDumpOptions ¶
func SetDumpOptions(opt *DumpOptions) *Client
func SetOutputDirectory ¶
func SetProxyURL ¶
func SetRedirectPolicy ¶
func SetRedirectPolicy(policies ...RedirectPolicy) *Client
func SetResponseOptions ¶
func SetResponseOptions(opt *ResponseOptions) *Client
func SetRootCertFromFile ¶
func SetRootCertFromString ¶
func SetTLSClientConfig ¶
func SetTimeout ¶
func SetUserAgent ¶
func (*Client) DevMode ¶
DevMode enables dump for requests and responses, and set user agent to pretend to be a web browser, Avoid returning abnormal data from some sites.
func (*Client) DisableAutoDecode ¶
DisableAutoDecode disable auto detect charset and decode to utf-8
func (*Client) DisableAutoReadResponse ¶
func (*Client) DisableCompression ¶
func (*Client) DisableKeepAlives ¶
func (*Client) EnableAutoDecodeAllType ¶
EnableAutoDecodeAllType indicates that try autodetect and decode all content type.
func (*Client) EnableDebug ¶
func (*Client) EnableDump ¶
EnableDump enables dump requests and responses, allowing you to clearly see the content of all requests and responses,which is very convenient for debugging APIs.
func (*Client) EnableDumpAll ¶
EnableDumpAll indicates that should dump both requests and responses' head and body.
func (*Client) EnableDumpAsync ¶
EnableDumpAsync indicates that the dump should be done asynchronously, can be used for debugging in production environment without affecting performance.
func (*Client) EnableDumpOnlyBody ¶
EnableDumpOnlyBody indicates that should dump the body of requests and responses.
func (*Client) EnableDumpOnlyHeader ¶
EnableDumpOnlyHeader indicates that should dump the head of requests and responses.
func (*Client) EnableDumpOnlyRequest ¶
EnableDumpOnlyRequest indicates that should dump the requests' head and response.
func (*Client) EnableDumpOnlyResponse ¶
EnableDumpOnlyResponse indicates that should dump the responses' head and response.
func (*Client) EnableDumpTo ¶
EnableDumpTo indicates that the content should dump to the specified destination.
func (*Client) EnableDumpToFile ¶
EnableDumpToFile indicates that the content should dump to the specified filename.
func (*Client) GetDumpOptions ¶
func (c *Client) GetDumpOptions() *DumpOptions
func (*Client) GetResponseOptions ¶
func (c *Client) GetResponseOptions() *ResponseOptions
func (*Client) OnAfterResponse ¶
func (c *Client) OnAfterResponse(m ResponseMiddleware) *Client
func (*Client) OnBeforeRequest ¶
func (c *Client) OnBeforeRequest(m RequestMiddleware) *Client
func (*Client) SetCert ¶
func (c *Client) SetCert(certs ...tls.Certificate) *Client
SetCert helps to set client certificates
func (*Client) SetCertFromFile ¶
SetCertFromFile helps to set client certificates from cert and key file
func (*Client) SetCommonBasicAuth ¶
func (*Client) SetCommonBearerAuthToken ¶
func (*Client) SetCommonHeader ¶
SetCommonHeader set the common header for all requests.
func (*Client) SetCommonQueryParam ¶
func (*Client) SetCommonQueryParams ¶
func (*Client) SetCommonQueryString ¶
func (*Client) SetDumpOptions ¶
func (c *Client) SetDumpOptions(opt *DumpOptions) *Client
SetDumpOptions configures the underlying Transport's DumpOptions
func (*Client) SetOutputDirectory ¶
func (*Client) SetProxyURL ¶
func (*Client) SetRedirectPolicy ¶
func (c *Client) SetRedirectPolicy(policies ...RedirectPolicy) *Client
SetRedirectPolicy helps to set the RedirectPolicy
func (*Client) SetResponseOptions ¶
func (c *Client) SetResponseOptions(opt *ResponseOptions) *Client
SetResponseOptions set the ResponseOptions for the underlying Transport.
func (*Client) SetRootCertFromFile ¶
SetRootCertFromFile helps to set root cert from files
func (*Client) SetRootCertFromString ¶
SetRootCertFromString helps to set root CA cert from string
func (*Client) SetScheme ¶
SetScheme method sets custom scheme in the Resty client. It's way to override default.
client.SetScheme("http")
func (*Client) SetTimeout ¶
SetTimeout set the timeout for all requests.
func (*Client) SetUserAgent ¶
SetUserAgent set the "User-Agent" header for all requests.
type DumpOptions ¶
type DumpOptions struct {
Output io.Writer
RequestHeader bool
RequestBody bool
ResponseHeader bool
ResponseBody bool
Async bool
}
DumpOptions controls the dump behavior.
func GetDumpOptions ¶
func GetDumpOptions() *DumpOptions
func (*DumpOptions) Clone ¶
func (do *DumpOptions) Clone() *DumpOptions
type Logger ¶
type Logger interface {
Errorf(format string, v ...interface{})
Warnf(format string, v ...interface{})
Debugf(format string, v ...interface{})
}
Logger interface is to abstract the logging from Resty. Gives control to the Resty users, choice of the logger.
type RedirectPolicy ¶
func AllowedDomainRedirectPolicy ¶
func AllowedDomainRedirectPolicy(hosts ...string) RedirectPolicy
AllowedDomainRedirectPolicy allows redirect only if the redirected domain match one of the domain that specified.
func AllowedHostRedirectPolicy ¶
func AllowedHostRedirectPolicy(hosts ...string) RedirectPolicy
AllowedHostRedirectPolicy allows redirect only if the redirected host match one of the host that specified.
func MaxRedirectPolicy ¶
func MaxRedirectPolicy(noOfRedirect int) RedirectPolicy
MaxRedirectPolicy specifies the max number of redirect
func NoRedirectPolicy ¶
func NoRedirectPolicy() RedirectPolicy
NoRedirectPolicy disable redirect behaviour
func SameDomainRedirectPolicy ¶
func SameDomainRedirectPolicy() RedirectPolicy
func SameHostRedirectPolicy ¶
func SameHostRedirectPolicy() RedirectPolicy
SameHostRedirectPolicy allows redirect only if the redirected host is the same as original host, e.g. redirect to "www.imroc.cc" from "imroc.cc" is not the allowed.
type Request ¶
type Request struct {
URL string
PathParams map[string]string
QueryParams urlpkg.Values
Headers http.Header
Cookies []*http.Cookie
Result interface{}
Error interface{}
RawRequest *http.Request
// contains filtered or unexported fields
}
Request is the http request
func NewRequest ¶
func NewRequest() *Request
func SetBasicAuth ¶
func SetBearerAuthToken ¶
func SetBodyBytes ¶
func SetBodyJsonBytes ¶
func SetBodyJsonMarshal ¶
func SetBodyJsonMarshal(v interface{}) *Request
func SetBodyJsonString ¶
func SetBodyString ¶
func SetContentType ¶
func SetCookies ¶
func SetHeaders ¶
func SetOutput ¶
func SetOutput(output io.WriteCloser) *Request
func SetOutputFile ¶
func SetPathParam ¶
func SetPathParams ¶
func SetQueryParam ¶
func SetQueryParams ¶
func SetQueryString ¶
func (*Request) MustDelete ¶
MustDelete like Delete, panic if error happens.
func (*Request) MustOptions ¶
MustOptions like Options, panic if error happens.
func (*Request) SetBasicAuth ¶
func (*Request) SetBearerAuthToken ¶
func (*Request) SetBodyBytes ¶
SetBodyBytes set the request body as []byte.
func (*Request) SetBodyJsonBytes ¶
SetBodyJsonBytes set the request body as []byte and set Content-Type header as "application/json; charset=UTF-8"
func (*Request) SetBodyJsonMarshal ¶
SetBodyJsonMarshal set the request body that marshaled from object, and set Content-Type header as "application/json; charset=UTF-8"
func (*Request) SetBodyJsonString ¶
SetBodyJsonString set the request body as string and set Content-Type header as "application/json; charset=UTF-8"
func (*Request) SetBodyString ¶
SetBodyString set the request body as string.
func (*Request) SetContentType ¶
func (*Request) SetOutputFile ¶
func (*Request) SetPathParam ¶
func (*Request) SetQueryParam ¶
func (*Request) SetQueryParams ¶
func (*Request) SetQueryString ¶
type RequestMiddleware ¶
RequestMiddleware type is for request middleware, called before a request is sent
type Response ¶
Response is the http response.
func MustDelete ¶
func MustOptions ¶
func (*Response) Error ¶
func (r *Response) Error() interface{}
Error method returns the error object if it has one
func (*Response) GetContentType ¶
func (*Response) IsError ¶
IsError method returns true if HTTP status `code >= 400` otherwise false.
func (*Response) IsSuccess ¶
IsSuccess method returns true if HTTP status `code >= 200 and <= 299` otherwise false.
func (*Response) MustString ¶
func (*Response) MustUnmarshal ¶
func (r *Response) MustUnmarshal(v interface{})
func (*Response) MustUnmarshalJson ¶
func (r *Response) MustUnmarshalJson(v interface{})
func (*Response) MustUnmarshalXml ¶
func (r *Response) MustUnmarshalXml(v interface{})
func (*Response) Result ¶
func (r *Response) Result() interface{}
Result method returns the response value as an object if it has one
func (*Response) UnmarshalJson ¶
func (*Response) UnmarshalXml ¶
type ResponseMiddleware ¶
ResponseMiddleware type is for response middleware, called after a response has been received
type ResponseOptions ¶
type ResponseOptions struct {
// DisableAutoDecode, if true, prevents auto detect response
// body's charset and decode it to utf-8
DisableAutoDecode bool
// AutoDecodeContentType specifies an optional function for determine
// whether the response body should been auto decode to utf-8.
// Only valid when DisableAutoDecode is true.
AutoDecodeContentType func(contentType string) bool
}
ResponseOptions determines that how should the response been processed.
func GetResponseOptions ¶
func GetResponseOptions() *ResponseOptions
type Transport ¶
type Transport struct {
// Proxy specifies a function to return a proxy for a given
// Request. If the function returns a non-nil error, the
// request is aborted with the provided error.
//
// The proxy type is determined by the URL scheme. "http",
// "https", and "socks5" are supported. If the scheme is empty,
// "http" is assumed.
//
// If Proxy is nil or returns a nil *URL, no proxy is used.
Proxy func(*http.Request) (*url.URL, error)
// DialContext specifies the dial function for creating unencrypted TCP connections.
// If DialContext is nil (and the deprecated Dial below is also nil),
// then the transport dials using package net.
//
// DialContext runs concurrently with calls to RoundTrip.
// A RoundTrip call that initiates a dial may end up using
// a connection dialed previously when the earlier connection
// becomes idle before the later DialContext completes.
DialContext func(ctx context.Context, network, addr string) (net.Conn, error)
// Dial specifies the dial function for creating unencrypted TCP connections.
//
// Dial runs concurrently with calls to RoundTrip.
// A RoundTrip call that initiates a dial may end up using
// a connection dialed previously when the earlier connection
// becomes idle before the later Dial completes.
//
// Deprecated: Use DialContext instead, which allows the transport
// to cancel dials as soon as they are no longer needed.
// If both are set, DialContext takes priority.
Dial func(network, addr string) (net.Conn, error)
// DialTLSContext specifies an optional dial function for creating
// TLS connections for non-proxied HTTPS requests.
//
// If DialTLSContext is nil (and the deprecated DialTLS below is also nil),
// DialContext and TLSClientConfig are used.
//
// If DialTLSContext is set, the Dial and DialContext hooks are not used for HTTPS
// requests and the TLSClientConfig and TLSHandshakeTimeout
// are ignored. The returned net.Conn is assumed to already be
// past the TLS handshake.
DialTLSContext func(ctx context.Context, network, addr string) (net.Conn, error)
// DialTLS specifies an optional dial function for creating
// TLS connections for non-proxied HTTPS requests.
//
// Deprecated: Use DialTLSContext instead, which allows the transport
// to cancel dials as soon as they are no longer needed.
// If both are set, DialTLSContext takes priority.
DialTLS func(network, addr string) (net.Conn, error)
// TLSClientConfig specifies the TLS configuration to use with
// tls.Client.
// If nil, the default configuration is used.
// If non-nil, HTTP/2 support may not be enabled by default.
TLSClientConfig *tls.Config
// TLSHandshakeTimeout specifies the maximum amount of time waiting to
// wait for a TLS handshake. Zero means no timeout.
TLSHandshakeTimeout time.Duration
// DisableKeepAlives, if true, disables HTTP keep-alives and
// will only use the connection to the server for a single
// HTTP request.
//
// This is unrelated to the similarly named TCP keep-alives.
DisableKeepAlives bool
// DisableCompression, if true, prevents the Transport from
// requesting compression with an "Accept-Encoding: gzip"
// request header when the Request contains no existing
// Accept-Encoding value. If the Transport requests gzip on
// its own and gets a gzipped response, it's transparently
// decoded in the Response.Body. However, if the user
// explicitly requested gzip it is not automatically
// uncompressed.
DisableCompression bool
// MaxIdleConns controls the maximum number of idle (keep-alive)
// connections across all hosts. Zero means no limit.
MaxIdleConns int
// MaxIdleConnsPerHost, if non-zero, controls the maximum idle
// (keep-alive) connections to keep per-host. If zero,
// DefaultMaxIdleConnsPerHost is used.
MaxIdleConnsPerHost int
// MaxConnsPerHost optionally limits the total number of
// connections per host, including connections in the dialing,
// active, and idle states. On limit violation, dials will block.
//
// Zero means no limit.
MaxConnsPerHost int
// IdleConnTimeout is the maximum amount of time an idle
// (keep-alive) connection will remain idle before closing
// itself.
// Zero means no limit.
IdleConnTimeout time.Duration
// ResponseHeaderTimeout, if non-zero, specifies the amount of
// time to wait for a server's response headers after fully
// writing the request (including its body, if any). This
// time does not include the time to read the response body.
ResponseHeaderTimeout time.Duration
// ExpectContinueTimeout, if non-zero, specifies the amount of
// time to wait for a server's first response headers after fully
// writing the request headers if the request has an
// "Expect: 100-continue" header. Zero means no timeout and
// causes the body to be sent immediately, without
// waiting for the server to approve.
// This time does not include the time to send the request header.
ExpectContinueTimeout time.Duration
// TLSNextProto specifies how the Transport switches to an
// alternate protocol (such as HTTP/2) after a TLS ALPN
// protocol negotiation. If Transport dials an TLS connection
// with a non-empty protocol name and TLSNextProto contains a
// map entry for that key (such as "h2"), then the func is
// called with the request's authority (such as "example.com"
// or "example.com:1234") and the TLS connection. The function
// must return a http.RoundTripper that then handles the request.
// If TLSNextProto is not nil, HTTP/2 support is not enabled
// automatically.
TLSNextProto map[string]func(authority string, c *tls.Conn) http.RoundTripper
// ProxyConnectHeader optionally specifies headers to send to
// proxies during CONNECT requests.
// To set the header dynamically, see GetProxyConnectHeader.
ProxyConnectHeader http.Header
// GetProxyConnectHeader optionally specifies a func to return
// headers to send to proxyURL during a CONNECT request to the
// ip:port target.
// If it returns an error, the Transport's RoundTrip fails with
// that error. It can return (nil, nil) to not add headers.
// If GetProxyConnectHeader is non-nil, ProxyConnectHeader is
// ignored.
GetProxyConnectHeader func(ctx context.Context, proxyURL *url.URL, target string) (http.Header, error)
// MaxResponseHeaderBytes specifies a limit on how many
// response bytes are allowed in the server's response
// header.
//
// Zero means to use a default limit.
MaxResponseHeaderBytes int64
// WriteBufferSize specifies the size of the write buffer used
// when writing to the transport.
// If zero, a default (currently 4KB) is used.
WriteBufferSize int
// ReadBufferSize specifies the size of the read buffer used
// when reading from the transport.
// If zero, a default (currently 4KB) is used.
ReadBufferSize int
// ForceAttemptHTTP2 controls whether HTTP/2 is enabled when a non-zero
// Dial, DialTLS, or DialContext func or TLSClientConfig is provided.
// By default, use of any those fields conservatively disables HTTP/2.
// To use a custom dialer or TLS config and still attempt HTTP/2
// upgrades, set this to true.
ForceAttemptHTTP2 bool
*ResponseOptions
// contains filtered or unexported fields
}
Transport is an implementation of http.RoundTripper that supports HTTP, HTTPS, and HTTP proxies (for either HTTP or HTTPS with CONNECT).
By default, Transport caches connections for future re-use. This may leave many open connections when accessing many hosts. This behavior can be managed using Transport's CloseIdleConnections method and the MaxIdleConnsPerHost and DisableKeepAlives fields.
Transports should be reused instead of created as needed. Transports are safe for concurrent use by multiple goroutines.
A Transport is a low-level primitive for making HTTP and HTTPS requests. For high-level functionality, such as cookies and redirects, see Client.
Transport uses HTTP/1.1 for HTTP URLs and either HTTP/1.1 or HTTP/2 for HTTPS URLs, depending on whether the server supports HTTP/2, and how the Transport is configured. The DefaultTransport supports HTTP/2. To explicitly enable HTTP/2 on a transport, use golang.org/x/net/http2 and call ConfigureTransport. See the package docs for more about HTTP/2.
Responses with status codes in the 1xx range are either handled automatically (100 expect-continue) or ignored. The one exception is HTTP status code 101 (Switching Protocols), which is considered a terminal status and returned by RoundTrip. To see the ignored 1xx responses, use the httptrace trace package's ClientTrace.Got1xxResponse.
Transport only retries a request upon encountering a network error if the request is idempotent and either has no body or has its Request.GetBody defined. HTTP requests are considered idempotent if they have HTTP methods GET, HEAD, OPTIONS, or TRACE; or if their Header map contains an "Idempotency-Key" or "X-Idempotency-Key" entry. If the idempotency key value is a zero-length slice, the request is treated as idempotent but the header is not sent on the wire.
func (*Transport) CancelRequest
deprecated
CancelRequest cancels an in-flight request by closing its connection. CancelRequest should only be called after RoundTrip has returned.
Deprecated: Use Request.WithContext to create a request with a cancelable context instead. CancelRequest cannot cancel HTTP/2 requests.
func (*Transport) CloseIdleConnections ¶
func (t *Transport) CloseIdleConnections()
CloseIdleConnections closes any connections which were previously connected from previous requests but are now sitting idle in a "keep-alive" state. It does not interrupt any connections currently in use.
func (*Transport) DisableDump ¶
func (t *Transport) DisableDump()
func (*Transport) EnableDump ¶
func (t *Transport) EnableDump(opt *DumpOptions)
func (*Transport) RegisterProtocol ¶
func (t *Transport) RegisterProtocol(scheme string, rt http.RoundTripper)
RegisterProtocol registers a new protocol with scheme. The Transport will pass requests using the given scheme to rt. It is rt's responsibility to simulate HTTP request semantics.
RegisterProtocol can be used by other packages to provide implementations of protocol schemes like "ftp" or "file".
If rt.RoundTrip returns ErrSkipAltProtocol, the Transport will handle the RoundTrip itself for that one request, as if the protocol were not registered.
Source Files
¶
Directories
¶
| Path | Synopsis |
|---|---|
|
Package internal contains HTTP internals shared by net/http and net/http/httputil.
|
Package internal contains HTTP internals shared by net/http and net/http/httputil. |
|
godebug
Package godebug parses the GODEBUG environment variable.
|
Package godebug parses the GODEBUG environment variable. |