Documentation ¶
Overview ¶
Package httpbin provides a simple HTTP request and response testing server, modeled on the original httpbin.org Python project.
Index ¶
- Constants
- Variables
- type DefaultParams
- type HTTPBin
- func (h *HTTPBin) AbsoluteRedirect(w http.ResponseWriter, r *http.Request)
- func (h *HTTPBin) Anything(w http.ResponseWriter, r *http.Request)
- func (h *HTTPBin) Base64(w http.ResponseWriter, r *http.Request)
- func (h *HTTPBin) BasicAuth(w http.ResponseWriter, r *http.Request)
- func (h *HTTPBin) Bearer(w http.ResponseWriter, r *http.Request)
- func (h *HTTPBin) Bytes(w http.ResponseWriter, r *http.Request)
- func (h *HTTPBin) Cache(w http.ResponseWriter, r *http.Request)
- func (h *HTTPBin) CacheControl(w http.ResponseWriter, r *http.Request)
- func (h *HTTPBin) Cookies(w http.ResponseWriter, r *http.Request)
- func (h *HTTPBin) Deflate(w http.ResponseWriter, r *http.Request)
- func (h *HTTPBin) Delay(w http.ResponseWriter, r *http.Request)
- func (h *HTTPBin) DeleteCookies(w http.ResponseWriter, r *http.Request)
- func (h *HTTPBin) Deny(w http.ResponseWriter, _ *http.Request)
- func (h *HTTPBin) DigestAuth(w http.ResponseWriter, r *http.Request)
- func (h *HTTPBin) Drip(w http.ResponseWriter, r *http.Request)
- func (h *HTTPBin) DumpRequest(w http.ResponseWriter, r *http.Request)
- func (h *HTTPBin) ETag(w http.ResponseWriter, r *http.Request)
- func (h *HTTPBin) FormsPost(w http.ResponseWriter, _ *http.Request)
- func (h *HTTPBin) Get(w http.ResponseWriter, r *http.Request)
- func (h *HTTPBin) Gzip(w http.ResponseWriter, r *http.Request)
- func (h *HTTPBin) HTML(w http.ResponseWriter, _ *http.Request)
- func (h *HTTPBin) Handler() http.Handler
- func (h *HTTPBin) Headers(w http.ResponseWriter, r *http.Request)
- func (h *HTTPBin) HiddenBasicAuth(w http.ResponseWriter, r *http.Request)
- func (h *HTTPBin) Hostname(w http.ResponseWriter, _ *http.Request)
- func (h *HTTPBin) IP(w http.ResponseWriter, r *http.Request)
- func (h *HTTPBin) Image(w http.ResponseWriter, r *http.Request)
- func (h *HTTPBin) ImageAccept(w http.ResponseWriter, r *http.Request)
- func (h *HTTPBin) Index(w http.ResponseWriter, r *http.Request)
- func (h *HTTPBin) JSON(w http.ResponseWriter, _ *http.Request)
- func (h *HTTPBin) Links(w http.ResponseWriter, r *http.Request)
- func (h *HTTPBin) Range(w http.ResponseWriter, r *http.Request)
- func (h *HTTPBin) Redirect(w http.ResponseWriter, r *http.Request)
- func (h *HTTPBin) RedirectTo(w http.ResponseWriter, r *http.Request)
- func (h *HTTPBin) RelativeRedirect(w http.ResponseWriter, r *http.Request)
- func (h *HTTPBin) RequestWithBody(w http.ResponseWriter, r *http.Request)
- func (h *HTTPBin) ResponseHeaders(w http.ResponseWriter, r *http.Request)
- func (h *HTTPBin) Robots(w http.ResponseWriter, _ *http.Request)
- func (h *HTTPBin) SSE(w http.ResponseWriter, r *http.Request)
- func (h *HTTPBin) ServeHTTP(w http.ResponseWriter, r *http.Request)
- func (h *HTTPBin) SetCookies(w http.ResponseWriter, r *http.Request)
- func (h *HTTPBin) Status(w http.ResponseWriter, r *http.Request)
- func (h *HTTPBin) Stream(w http.ResponseWriter, r *http.Request)
- func (h *HTTPBin) StreamBytes(w http.ResponseWriter, r *http.Request)
- func (h *HTTPBin) Trailers(w http.ResponseWriter, r *http.Request)
- func (h *HTTPBin) UTF8(w http.ResponseWriter, _ *http.Request)
- func (h *HTTPBin) UUID(w http.ResponseWriter, _ *http.Request)
- func (h *HTTPBin) Unstable(w http.ResponseWriter, r *http.Request)
- func (h *HTTPBin) UserAgent(w http.ResponseWriter, r *http.Request)
- func (h *HTTPBin) WebSocketEcho(w http.ResponseWriter, r *http.Request)
- func (h *HTTPBin) XML(w http.ResponseWriter, _ *http.Request)
- type Observer
- type OptionFunc
- func WithAllowedRedirectDomains(hosts []string) OptionFunc
- func WithDefaultParams(defaultParams DefaultParams) OptionFunc
- func WithExcludeHeaders(excludeHeaders string) OptionFunc
- func WithHostname(s string) OptionFunc
- func WithMaxBodySize(m int64) OptionFunc
- func WithMaxDuration(d time.Duration) OptionFunc
- func WithObserver(o Observer) OptionFunc
- func WithPrefix(p string) OptionFunc
- type Result
Constants ¶
const ( DefaultMaxBodySize int64 = 1024 * 1024 DefaultMaxDuration = 10 * time.Second DefaultHostname = "go-httpbin" )
Default configuration values
Variables ¶
var DefaultDefaultParams = DefaultParams{ DripDuration: 2 * time.Second, DripDelay: 2 * time.Second, DripNumBytes: 10, SSECount: 10, SSEDuration: 5 * time.Second, SSEDelay: 0, }
DefaultDefaultParams defines the DefaultParams that are used by default. In general, these should match the original httpbin.org's defaults.
Functions ¶
This section is empty.
Types ¶
type DefaultParams ¶
type DefaultParams struct { // for the /drip endpoint DripDuration time.Duration DripDelay time.Duration DripNumBytes int64 // for the /sse endpoint SSECount int SSEDuration time.Duration SSEDelay time.Duration }
DefaultParams defines default parameter values
type HTTPBin ¶
type HTTPBin struct { // Max size of an incoming request or generated response body, in bytes MaxBodySize int64 // Max duration of a request, for those requests that allow user control // over timing (e.g. /delay) MaxDuration time.Duration // Observer called with the result of each handled request Observer Observer // Default parameter values DefaultParams DefaultParams // Set of hosts to which the /redirect-to endpoint will allow redirects AllowedRedirectDomains map[string]struct{} // contains filtered or unexported fields }
HTTPBin contains the business logic
func (*HTTPBin) AbsoluteRedirect ¶
func (h *HTTPBin) AbsoluteRedirect(w http.ResponseWriter, r *http.Request)
AbsoluteRedirect responds with an HTTP 302 redirect a given number of times
func (*HTTPBin) Anything ¶ added in v2.5.0
func (h *HTTPBin) Anything(w http.ResponseWriter, r *http.Request)
Anything returns anything that is passed to request.
func (*HTTPBin) Base64 ¶
func (h *HTTPBin) Base64(w http.ResponseWriter, r *http.Request)
Base64 - encodes/decodes input data
func (*HTTPBin) BasicAuth ¶
func (h *HTTPBin) BasicAuth(w http.ResponseWriter, r *http.Request)
BasicAuth requires basic authentication
func (*HTTPBin) Bearer ¶
func (h *HTTPBin) Bearer(w http.ResponseWriter, r *http.Request)
Bearer - Prompts the user for authorization using bearer authentication.
func (*HTTPBin) Bytes ¶
func (h *HTTPBin) Bytes(w http.ResponseWriter, r *http.Request)
Bytes returns N random bytes generated with an optional seed
func (*HTTPBin) Cache ¶
func (h *HTTPBin) Cache(w http.ResponseWriter, r *http.Request)
Cache returns a 304 if an If-Modified-Since or an If-None-Match header is present, otherwise returns the same response as Get.
func (*HTTPBin) CacheControl ¶
func (h *HTTPBin) CacheControl(w http.ResponseWriter, r *http.Request)
CacheControl sets a Cache-Control header for N seconds for /cache/N requests
func (*HTTPBin) Cookies ¶
func (h *HTTPBin) Cookies(w http.ResponseWriter, r *http.Request)
Cookies responds with the cookies in the incoming request
func (*HTTPBin) Deflate ¶
func (h *HTTPBin) Deflate(w http.ResponseWriter, r *http.Request)
Deflate returns a gzipped response
func (*HTTPBin) Delay ¶
func (h *HTTPBin) Delay(w http.ResponseWriter, r *http.Request)
Delay waits for a given amount of time before responding, where the time may be specified as a golang-style duration or seconds in floating point.
func (*HTTPBin) DeleteCookies ¶
func (h *HTTPBin) DeleteCookies(w http.ResponseWriter, r *http.Request)
DeleteCookies deletes cookies specified in query params and redirects to Cookies endpoint
func (*HTTPBin) Deny ¶
func (h *HTTPBin) Deny(w http.ResponseWriter, _ *http.Request)
Deny renders a basic page that robots should never access
func (*HTTPBin) DigestAuth ¶
func (h *HTTPBin) DigestAuth(w http.ResponseWriter, r *http.Request)
DigestAuth handles a simple implementation of HTTP Digest Authentication, which supports the "auth" QOP and the MD5 and SHA-256 crypto algorithms.
/digest-auth/<qop>/<user>/<passwd> /digest-auth/<qop>/<user>/<passwd>/<algorithm>
func (*HTTPBin) Drip ¶
func (h *HTTPBin) Drip(w http.ResponseWriter, r *http.Request)
Drip simulates a slow HTTP server by writing data over a given duration after an optional initial delay.
Because this endpoint is intended to simulate a slow HTTP connection, it intentionally does NOT use chunked transfer encoding even though its implementation writes the response incrementally.
See Stream (/stream) or StreamBytes (/stream-bytes) for endpoints that respond using chunked transfer encoding.
func (*HTTPBin) DumpRequest ¶ added in v2.5.5
func (h *HTTPBin) DumpRequest(w http.ResponseWriter, r *http.Request)
DumpRequest - returns the given request in its HTTP/1.x wire representation. The returned representation is an approximation only; some details of the initial request are lost while parsing it into an http.Request. In particular, the order and case of header field names are lost.
func (*HTTPBin) ETag ¶
func (h *HTTPBin) ETag(w http.ResponseWriter, r *http.Request)
ETag assumes the resource has the given etag and responds to If-None-Match and If-Match headers appropriately.
func (*HTTPBin) FormsPost ¶
func (h *HTTPBin) FormsPost(w http.ResponseWriter, _ *http.Request)
FormsPost renders an HTML form that submits a request to the /post endpoint
func (*HTTPBin) Get ¶
func (h *HTTPBin) Get(w http.ResponseWriter, r *http.Request)
Get handles HTTP GET requests
func (*HTTPBin) Gzip ¶
func (h *HTTPBin) Gzip(w http.ResponseWriter, r *http.Request)
Gzip returns a gzipped response
func (*HTTPBin) HTML ¶
func (h *HTTPBin) HTML(w http.ResponseWriter, _ *http.Request)
HTML renders a basic HTML page
func (*HTTPBin) Headers ¶
func (h *HTTPBin) Headers(w http.ResponseWriter, r *http.Request)
Headers echoes the incoming request headers
func (*HTTPBin) HiddenBasicAuth ¶
func (h *HTTPBin) HiddenBasicAuth(w http.ResponseWriter, r *http.Request)
HiddenBasicAuth requires HTTP Basic authentication but returns a status of 404 if the request is unauthorized
func (*HTTPBin) Hostname ¶ added in v2.4.1
func (h *HTTPBin) Hostname(w http.ResponseWriter, _ *http.Request)
Hostname - returns the hostname.
func (*HTTPBin) IP ¶
func (h *HTTPBin) IP(w http.ResponseWriter, r *http.Request)
IP echoes the IP address of the incoming request
func (*HTTPBin) Image ¶
func (h *HTTPBin) Image(w http.ResponseWriter, r *http.Request)
Image responds with an image of a specific kind, from /image/<kind>
func (*HTTPBin) ImageAccept ¶
func (h *HTTPBin) ImageAccept(w http.ResponseWriter, r *http.Request)
ImageAccept responds with an appropriate image based on the Accept header
func (*HTTPBin) Index ¶
func (h *HTTPBin) Index(w http.ResponseWriter, r *http.Request)
Index renders an HTML index page
func (*HTTPBin) JSON ¶
func (h *HTTPBin) JSON(w http.ResponseWriter, _ *http.Request)
JSON - returns a sample json
func (*HTTPBin) Links ¶
func (h *HTTPBin) Links(w http.ResponseWriter, r *http.Request)
Links redirects to the first page in a series of N links
func (*HTTPBin) Range ¶
func (h *HTTPBin) Range(w http.ResponseWriter, r *http.Request)
Range returns up to N bytes, with support for HTTP Range requests.
This departs from httpbin by not supporting the chunk_size or duration parameters.
func (*HTTPBin) Redirect ¶
func (h *HTTPBin) Redirect(w http.ResponseWriter, r *http.Request)
Redirect responds with 302 redirect a given number of times. Defaults to a relative redirect, but an ?absolute=true query param will trigger an absolute redirect.
func (*HTTPBin) RedirectTo ¶
func (h *HTTPBin) RedirectTo(w http.ResponseWriter, r *http.Request)
RedirectTo responds with a redirect to a specific URL with an optional status code, which defaults to 302
func (*HTTPBin) RelativeRedirect ¶
func (h *HTTPBin) RelativeRedirect(w http.ResponseWriter, r *http.Request)
RelativeRedirect responds with an HTTP 302 redirect a given number of times
func (*HTTPBin) RequestWithBody ¶
func (h *HTTPBin) RequestWithBody(w http.ResponseWriter, r *http.Request)
RequestWithBody handles POST, PUT, and PATCH requests by responding with a JSON representation of the incoming request.
func (*HTTPBin) ResponseHeaders ¶
func (h *HTTPBin) ResponseHeaders(w http.ResponseWriter, r *http.Request)
ResponseHeaders responds with a map of header values
func (*HTTPBin) Robots ¶
func (h *HTTPBin) Robots(w http.ResponseWriter, _ *http.Request)
Robots renders a basic robots.txt file
func (*HTTPBin) SSE ¶ added in v2.13.0
func (h *HTTPBin) SSE(w http.ResponseWriter, r *http.Request)
SSE writes a stream of events over a duration after an optional initial delay.
func (*HTTPBin) ServeHTTP ¶ added in v2.5.2
func (h *HTTPBin) ServeHTTP(w http.ResponseWriter, r *http.Request)
ServeHTTP implememnts the http.Handler interface.
func (*HTTPBin) SetCookies ¶
func (h *HTTPBin) SetCookies(w http.ResponseWriter, r *http.Request)
SetCookies sets cookies as specified in query params and redirects to Cookies endpoint
func (*HTTPBin) Status ¶
func (h *HTTPBin) Status(w http.ResponseWriter, r *http.Request)
Status responds with the specified status code. TODO: support random choice from multiple, optionally weighted status codes.
func (*HTTPBin) Stream ¶
func (h *HTTPBin) Stream(w http.ResponseWriter, r *http.Request)
Stream responds with max(n, 100) lines of JSON-encoded request data.
func (*HTTPBin) StreamBytes ¶
func (h *HTTPBin) StreamBytes(w http.ResponseWriter, r *http.Request)
StreamBytes streams N random bytes generated with an optional seed in chunks of a given size.
func (*HTTPBin) Trailers ¶ added in v2.15.0
func (h *HTTPBin) Trailers(w http.ResponseWriter, r *http.Request)
Trailers adds the header keys and values specified in the request's query parameters as HTTP trailers in the response.
Trailers are returned in canonical form. Any forbidden trailer will result in an error.
func (*HTTPBin) UTF8 ¶
func (h *HTTPBin) UTF8(w http.ResponseWriter, _ *http.Request)
UTF8 renders an HTML encoding stress test
func (*HTTPBin) UUID ¶
func (h *HTTPBin) UUID(w http.ResponseWriter, _ *http.Request)
UUID - responds with a generated UUID
func (*HTTPBin) Unstable ¶
func (h *HTTPBin) Unstable(w http.ResponseWriter, r *http.Request)
Unstable - returns 500, sometimes
func (*HTTPBin) UserAgent ¶
func (h *HTTPBin) UserAgent(w http.ResponseWriter, r *http.Request)
UserAgent echoes the incoming User-Agent header
func (*HTTPBin) WebSocketEcho ¶ added in v2.13.0
func (h *HTTPBin) WebSocketEcho(w http.ResponseWriter, r *http.Request)
WebSocketEcho - simple websocket echo server, where the max fragment size and max message size can be controlled by clients.
type Observer ¶
type Observer func(result Result)
Observer is a function that will be called with the details of a handled request, which can be used for logging, instrumentation, etc
func StdLogObserver ¶
StdLogObserver creates an Observer that will log each request in structured format using the given stdlib logger
type OptionFunc ¶
type OptionFunc func(*HTTPBin)
OptionFunc uses the "functional options" pattern to customize an HTTPBin instance
func WithAllowedRedirectDomains ¶ added in v2.5.1
func WithAllowedRedirectDomains(hosts []string) OptionFunc
WithAllowedRedirectDomains limits the domains to which the /redirect-to endpoint will redirect traffic.
func WithDefaultParams ¶
func WithDefaultParams(defaultParams DefaultParams) OptionFunc
WithDefaultParams sets the default params handlers will use
func WithExcludeHeaders ¶ added in v2.11.0
func WithExcludeHeaders(excludeHeaders string) OptionFunc
WithExcludeHeaders sets the headers to exclude in outgoing responses, to prevent possible information leakage.
func WithHostname ¶ added in v2.4.1
func WithHostname(s string) OptionFunc
WithHostname sets the hostname to return via the /hostname endpoint.
func WithMaxBodySize ¶
func WithMaxBodySize(m int64) OptionFunc
WithMaxBodySize sets the maximum amount of memory
func WithMaxDuration ¶
func WithMaxDuration(d time.Duration) OptionFunc
WithMaxDuration sets the maximum amount of time httpbin may take to respond
func WithObserver ¶
func WithObserver(o Observer) OptionFunc
WithObserver sets the request observer callback
func WithPrefix ¶ added in v2.13.0
func WithPrefix(p string) OptionFunc
WithPrefix sets the path prefix
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
Package cmd implements the go-httpbin command line interface as a testable package.
|
Package cmd implements the go-httpbin command line interface as a testable package. |
Package digest provides a limited implementation of HTTP Digest Authentication, as defined in RFC 2617.
|
Package digest provides a limited implementation of HTTP Digest Authentication, as defined in RFC 2617. |
Package websocket implements a basic websocket server.
|
Package websocket implements a basic websocket server. |