Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Speak HTTP like a local. (the simple, intuitive HTTP console, golang version)
Pull request Compare This branch is 1 commit behind mattn:master.
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

Something went wrong with that request. Please try again.