# go-httpbin(1)

A golang port of the venerable httpbin.org HTTP request & response testing service.

## ENDPOINTS

- `/` This page.
- `/absolute-redirect/:n` 302 Absolute redirects n times.
- `/base64/:value` Decodes a Base64 encoded string.
- `/base64/decode/:value` Explicit URL for decoding a Base64 encoded string.
- `/base64/encode/:value` Encodes a string into Base64.
- `/basic-auth/:user/:passwd` Challenges HTTPBasic Auth.
- `/bearer` Checks Bearer token header - returns 401 if not set.
- `/brotli` Returns brotli-encoded data. Not implemented!
- `/bytes/:n` Generates n random bytes of binary data, accepts optional seed integer parameter.
- `/cache` Returns 200 unless an If-Modified-Since or If-None-Match header is provided, when it returns a 304.
- `/cache/:n` Sets a Cache-Control header for n seconds.
- `/cookies` Returns cookie data.
- `/cookies/delete?name` Deletes one or more simple cookies.
- `/cookies/set?name=value` Sets one or more simple cookies.
- `/deflate` Returns deflate-encoded data.
- `/delay/:n` Delays responding for min(n, 10) seconds.
- `/deny` Denied by robots.txt file.
- `/digest-auth/:qop/:user/:passwd/:algorithm` Challenges HTTP Digest Auth.
- `/digest-auth/:qop/:user/:passwd` Challenges HTTP Digest Auth.
- `/drip?numbytes=n&duration=s&delay=s&code=code` Drips data over a duration after an optional initial delay, then (optionally) returns with the given status code.
- `/encoding/utf8` Returns page containing UTF-8 data.
- `/etag/:etag` Assumes the resource has the given etag and responds to If-None-Match header with a 200 or 304 and If-Match with a 200 or 412 as appropriate.
- `/forms/post` HTML form that submits to /post
- `/get` Returns GET data.
- `/gzip` Returns gzip-encoded data.
- `/headers` Returns header dict.
- `/hidden-basic-auth/:user/:passwd` 404'd BasicAuth.
- `/html` Renders an HTML Page.
- `/image` Returns page containing an image based on sent Accept header.
- `/image/jpeg` Returns a JPEG image.
- `/image/png` Returns a PNG image.
- `/image/svg` Returns a SVG image.
- `/image/webp` Returns a WEBP image.
- `/ip` Returns Origin IP.
- `/json` Returns JSON.
- `/links/:n` Returns page containing n HTML links.
- `/range/1024?duration=s&chunk_size=code` Streams n bytes, and allows specifying a Range header to select a subset of the data. Accepts a chunk_size and request duration parameter.
- `/redirect-to?url=foo&status_code=307` 307 Redirects to the foo URL.
- `/redirect-to?url=foo` 302 Redirects to the foo URL.
- `/redirect/:n` 302 Redirects n times.
- `/relative-redirect/:n` 302 Relative redirects n times.
- `/response-headers?key=val` Returns given response headers.
- `/robots.txt` Returns some robots.txt rules.
- `/status/:code` Returns given HTTP Status code.
- `/stream-bytes/:n` Streams n random bytes of binary data, accepts optional seed and chunk_size integer parameters.
- `/stream/:n` Streams min(n, 100) lines.
- `/user-agent` Returns user-agent.
- `/uuid` Generates a UUIDv4 value.
- `/xml` Returns some XML

## DESCRIPTION

Testing an HTTP Library can become difficult sometimes. RequestBin is fantastic for testing POST requests, but doesn't let you control the response. This exists to cover all kinds of HTTP scenarios. Additional endpoints are being considered.

All endpoint responses are JSON-encoded.

## EXAMPLES

### $ curl https://httpbingo.org/ip

    {"origin": "24.127.96.129"}

### $ curl https://httpbingo.org/user-agent

    {"user-agent": "curl/7.19.7 (universal-apple-darwin10.0) libcurl/7.19.7 OpenSSL/0.9.8l zlib/1.2.3"}

### $ curl https://httpbingo.org/get

    {
       "args": {},
       "headers": {
          "Accept": "*/*",
          "Connection": "close",
          "Content-Length": "",
          "Content-Type": "",
          "Host": "httpbin.org",
          "User-Agent": "curl/7.19.7 (universal-apple-darwin10.0) libcurl/7.19.7 OpenSSL/0.9.8l zlib/1.2.3"
       },
       "origin": "24.127.96.129",
       "url": "https://httpbingo.org/get"
    }

### $ curl -I https://httpbingo.org/status/418

    HTTP/1.1 418 I'M A TEAPOT
    Server: nginx/0.7.67
    Date: Mon, 13 Jun 2011 04:25:38 GMT
    Connection: close
    x-more-info: http://tools.ietf.org/html/rfc2324
    Content-Length: 135

### $ curl https://httpbingo.org/get?show_env=1

    {
      "headers": {
        "Content-Length": "",
        "Accept-Language": "en-US,en;q=0.8",
        "Accept-Encoding": "gzip,deflate,sdch",
        "X-Forwarded-Port": "443",
        "X-Forwarded-For": "109.60.101.240",
        "Host": "httpbin.org",
        "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
        "User-Agent": "Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.83 Safari/535.11",
        "X-Request-Start": "1350053933441",
        "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.3",
        "Connection": "keep-alive",
        "X-Forwarded-Proto": "https",
        "Cookie": "_gauges_unique_day=1; _gauges_unique_month=1; _gauges_unique_year=1; _gauges_unique=1; _gauges_unique_hour=1",
        "Content-Type": ""
      },
      "args": {
        "show_env": "1"
      },
      "origin": "109.60.101.240",
      "url": "https://httpbingo.org/get?show_env=1"
    }

## AUTHOR

Ported to Go by Will McCutchen.

From the original Kenneth Reitz project.

## SEE ALSO

httpbin.org — the original httpbin