• Stars
    star
    1,358
  • Rank 33,408 (Top 0.7 %)
  • Language
    JavaScript
  • License
    Apache License 2.0
  • Created almost 14 years ago
  • Updated almost 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

simple, intuitive HTTP REPL β€” Speak HTTP like a local.

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-console is a simple and intuitive interface for speaking the HTTP protocol.

PS: HTTP has never been this much fun.

synopsis

http-console

installation

http-console was written for node, so make sure you have that installed first. Then you need npm, node's package manager.

Once you're all set, to install globally, run:

$ npm install http-console -g

It'll download the dependencies, and install the command-line tool in /usr/local/bin (you may need to make use of sudo or equivalent to gain access).

Installing the bleeding edge

The latest release will often be available on npm as http-console@latest, so you can run:

$ npm install http-console@latest

Alternatively, you can download a tarball of this repo, or clone it. Just make sure you have the latest version of node.

introduction

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

connecting

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

$ http-console 127.0.0.1:5984 

navigating

Once connected, we should see the http prompt:

http://127.0.0.1:5984/>

server navigation is similar to directory navigation, except a little simpler:

http://127.0.0.1:5984/> /logs
http://127.0.0.1:5984/logs> /46
http://127.0.0.1:5984/logs/46> ..
http://127.0.0.1:5984/logs> ..
http://127.0.0.1:5984/>

requesting

HTTP requests are issued with the HTTP verbs GET, PUT, POST, HEAD and DELETE, and a relative path:

http://127.0.0.1:5984/> GET /
HTTP/1.1 200 OK
Date: Mon, 31 May 2010 04:43:39 GMT
Content-Length: 41

{
    couchdb: "Welcome",
    version: "0.11.0"
}

http://127.0.0.1:5984/> 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:

http://127.0.0.1:5984/> /rabbits
http://127.0.0.1:5984/rabbits> POST
... {"name":"Roger"}

HTTP/1.1 201 Created
Location: http://127.0.0.1/rabbits/2fd9db055885e6982462a10e54003127
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-console 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:

http://127.0.0.1:5984/> Accept: application/json
http://127.0.0.1:5984/> X-Lodge: black

These headers are sent with all requests in this session. To see all active headers, run the .headers command:

http://127.0.0.1:5984/> .headers
Accept: application/json
X-Lodge: black

Removing headers is just as easy:

http://127.0.0.1:5984/> Accept:
http://127.0.0.1:5984/> .headers
X-Lodge: black

Because JSON is such a common data format, http-console has a way to automatically set the Content-Type header to application/json. Just pass the --json option when starting http-console, or run the .json command:

$ http-console 127.0.0.1:5984 --json
http://127.0.0.1:5984/> .headers
Accept: */*
Content-Type: application/json

cookies

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

SSL

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

quitting

http://127.0.0.1:5984/> .q

nuff' said.

More Repositories

1

rx

πŸ‘Ύ Modern and minimalist pixel editor
Rust
2,920
star
2

node-static

rfc 2616 compliant HTTP static-file server module, with built-in caching.
JavaScript
2,177
star
3

toto

the 10 second blog-engine for hackers
Ruby
1,473
star
4

eyes.js

a customizable value inspector for node.js
JavaScript
342
star
5

journey

liberal JSON-only HTTP request routing for node.
JavaScript
321
star
6

nakamoto

Privacy-preserving Bitcoin light-client implementation in Rust
Rust
303
star
7

thingler

The amazingly simple-to-use, real-time, collaborative todo list!
JavaScript
296
star
8

dorothy

a basic template for toto, the blogging engine
Ruby
244
star
9

hijs

simple & fast javascript syntax highlighting for the browser
JavaScript
240
star
10

rgx.legacy

Modern mid-level 2D graphics library
Rust
194
star
11

popol

Minimal non-blocking I/O for Rust
Rust
157
star
12

neovim-fuzzy

Minimalistic fuzzy file finding for neovim
Vim Script
111
star
13

dotfiles

~cloudhead
Vim Script
100
star
14

mutter

the tiny command-line interface library with lots of style~
Ruby
80
star
15

resourcer

a resource-oriented object-relational mapper for document databases
JavaScript
58
star
16

pixelog

simple pixel tracking server
Go
56
star
17

node-syslog

a syslog-ng TCP client, with basic fault-tolerance.
JavaScript
32
star
18

koi

minimal task management for hackers
Ruby
31
star
19

nonempty

Correct by construction non-empty list
Rust
30
star
20

px

Superseded by `rx`
C
30
star
21

erlapp.template

minimal erlang/OTP rebar template
Erlang
29
star
22

styleguide

style-guide for various languages
27
star
23

shady.vim

Shady vim color-scheme for late night hacking
Vim Script
23
star
24

vargs

practical variable argument handling in node.js
JavaScript
22
star
25

neovim-ghcid

Provides instant haskell error feedback inside of neovim, via ghcid.
Vim Script
21
star
26

microserde

miniserde minus the dependencies
Rust
18
star
27

pilgrim

a JSON consuming JavaScript XHR client for the browser
JavaScript
15
star
28

nimbus

nimble, durable, document store
JavaScript
14
star
29

spell-correct

ruby implementation of Norvig's spell corrector
Ruby
12
star
30

node-crawler

http crawler β€” (project under development)
JavaScript
12
star
31

arbre

a dynamic functional programming language experiment
C
10
star
32

mrchat

micro chat client for the console, in c, with some tasteful ncurses
C
9
star
33

rig.js

temporally extend an object's capabilities.
JavaScript
9
star
34

talker-plugins

A bunch of plugins for Talker (http://talkerapp.com)
JavaScript
9
star
35

node-provider

Manage HTTP content providers. It's 'Accept'-based routing, folks!
JavaScript
9
star
36

proto.js

prototype & other core extensions
JavaScript
8
star
37

github-unwatcher

Unwatch github repos
JavaScript
8
star
38

memoir

Self-describing, reflective parser combinators
Rust
7
star
39

spinsv

a stateless service runner inspired by runit
Haskell
7
star
40

bloomy

Bloom filter implementation in Rust
Rust
6
star
41

avl-auth

An authenticated AVL+ tree implementation in Haskell
Haskell
6
star
42

gogol

a bitmap drawing & animation library for Go
Go
6
star
43

cloudhead.io

This is my website.
CSS
5
star
44

prose

lightweight text to html parser, combining the best of Markdown with a hint of Textile
Ruby
5
star
45

s3web

scripts for publishing static sites to S3
Ruby
4
star
46

github-recommend

recommendation engine for github's 2009 contest
C
4
star
47

monsv

a service runner inspired by runsv
Go
3
star
48

diffraction

even stocks can be diffracted!
Ruby
3
star
49

melon

hybrid javascript/ruby micro app engine
Ruby
3
star
50

node-intro

intro to node.js presentation for montreal.js
JavaScript
3
star
51

cryptocurrency

Cryptocurrency library for Haskell
Haskell
2
star
52

golem

pre-forking HTTP server for node (old)
JavaScript
2
star
53

ghoul

your (node) deployment minion - a work in progress.
PHP
2
star
54

extender

handy extensions to keep your code cleanβ„’
Ruby
2
star
55

rx.cloudhead.io

CSS
2
star
56

birth

graceful linux system birthing
Vim Script
2
star
57

iohk-challenge

IOHK Haskell test
Haskell
1
star
58

sokol-gfx-rs

C
1
star
59

a-file-uploader

JavaScript
1
star
60

rgx

2D Graphics Toolkit for Rust
Rust
1
star