Speak HTTP like a local. (the simple, intuitive HTTP console, golang version)
Go Makefile
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.



This is the Go port of the http-console.

Speak HTTP like a local

Talking to an HTTP server with curl can be fun, but most of the time it's a PITA.

http-gonsole is a simple and intuitive interface for speaking the HTTP protocol.

PS: HTTP has never been this much fun.


You'll need the to install go, http-gonsole is tested with release.r57.1.

How to use

Let's assume we have a CouchDB instance running locally.


To connect, we run http-gonsole, passing it the server host and port as such:

$ http-gonsole 


Once connected, we should see the http prompt:>

server navigation is similar to directory navigation, except a little simpler:> /logs> /46> ..> ..>


HTTP requests are issued with the HTTP verbs GET, PUT, POST, HEAD and DELETE, and a relative path:> GET /
HTTP/1.1 200 OK
Date: Mon, 31 May 2010 04:43:39 GMT
Content-Length: 41

    couchdb: "Welcome",
    version: "0.11.0"
}> GET /bob
HTTP/1.1 404 Not Found
Date: Mon, 31 May 2010 04:45:32 GMT
Content-Length: 44

    error: "not_found",
    reason: "no_db_file"

When issuing POST and PUT commands, we have the opportunity to send data too:> /rabbits> POST
... {"name":"Roger"}

HTTP/1.1 201 Created
Date: Mon, 31 May 2010 05:09:15 GMT
Content-Length: 95

    ok: true,
    id: "2fd9db055885e6982462a10e54003127",
    rev: "1-0c3db91854f26486d1c3922f1a651d86"

Make sure you have your Content-Type header set properly, if the API requires it. More in the section below.

Note that if you're trying to POST to a form handler, you'll most probably want to send data in multipart/form-data format, such as name=roger&hair=black. http-gonsole sends your POST/PUT data as is, so make sure you've got the format right, and the appropriate Content-Type header.

setting headers

Sometimes, it's useful to set HTTP headers:> Accept: application/json> X-Lodge: black

These headers are sent with all requests in this session. To see all active headers, run the \headers or \h command:> \headers
Accept: application/json
X-Lodge: black

Removing headers is just as easy:> Accept:> \h
X-Lodge: black


You can enable cookie tracking with the --cookies option flag. To see what cookies are stored, use the \cookies or \c command.


To enable SSL, pass the --ssl flag, or specify the address with https.

quitting> \q

or,> ^D

nuff' said.


BSD License