3.1.1 • Published 10 years ago

ech v3.1.1

Weekly downloads
5
License
BSD-3-Clause
Repository
github
Last release
10 years ago

ech

Echo Entire HTTP Requests in JSON.

So the top few Google searches for something to the effect of "http echo server" didn't return much. Or maybe I didn't look hard enough, whatever.

Anyway, I rolled my own. This is not HTTPBin, rather this echoes all parts of any and all requests made to the server (I could think of) including:

  • URL
  • HTTP Method
  • Headers
  • Querystring
  • Request IP
  • HTTP Body

The idea is to make literally any request, and get your response back verbatim (in JSON!).

Usage

Usage: ech [options]

Options:

	-h, --help     output usage information
	-V, --version  output the version number
	-p, --port     Specify port [default:8001]
	-h, --host     Specify host [default:'0.0.0.0']

Install

npm install -g ech

Examples

Example 1

$ curl 'http://user:pass@localhost:8001/p/a/t/h?query=string#hash' \
	-u sk_test_PJHhXK0ewzsJUfzjDQvEBCLN: \
	-d amount=400 \
	-d currency=usd \
	-d "description=Charge for test@example.com" \
	-d "source[object]=card" \
	-d "source[number]=4242424242424242" \
	-d "source[exp_month]=12" \
	-d "source[exp_year]=2016" \
	-d "source[cvc]=123"

(Yes, that's from from Stripe's examples).

Result:

{
		"fullUrl": "/p/a/t/h?query=string",
		"url": "/p/a/t/h",
		"fullQuery": "?query=string",
		"query": {
				"query": "string"
		},
		"ip": "127.0.0.1",
		"method": "POST",
		"headers": {
				"authorization": "Basic c2tfdGVzdF9QSkhoWEswZXd6c0pVZnpqRFF2RUJDTE46cGFzcw==",
				"user-agent": "curl/7.35.0",
				"host": "localhost:8001",
				"accept": "*/*",
				"content-length": "174",
				"content-type": "application/x-www-form-urlencoded"
		},
		"body": {
				"amount": "400",
				"currency": "usd",
				"description": "Charge for test@example.com",
				"source[object]": "card",
				"source[number]": "4242424242424242",
				"source[exp_month]": "12",
				"source[exp_year]": "2016",
				"source[cvc]": "123"
		}

Example 2

$ curl localhost:8001

Result:

{
		"fullUrl": "/",
		"url": "/",
		"fullQuery": "",
		"query": {},
		"ip": "127.0.0.1",
		"method": "GET",
		"headers": {
				"user-agent": "curl/7.35.0",
				"host": "localhost:8001",
				"accept": "*/*"
		},
		"body": {}
}

Example 3

ech can parse both "application/x-www-form-urlencoded" and "application/json" form bodies, and does so for you automatically:

$ http :8001/users/new username=chrisdotcode email=chris@example.com password=1234
{
    "body": {
        "email": "chris@example.com",
        "password": "1234",
        "username": "chrisdotcode"
    },
    "fullQuery": "",
    "fullUrl": "/users/new",
    "headers": {
        "accept": "application/json",
        "accept-encoding": "gzip, deflate, compress",
        "content-length": "78",
        "content-type": "application/json; charset=utf-8",
        "host": "localhost:8001",
        "user-agent": "HTTPie/0.8.0"
    },
    "ip": "127.0.0.1",
    "method": "POST",
    "query": {},
    "url": "/users/new"
}

You get the idea.

3.1.1

10 years ago

3.1.0

10 years ago

3.0.0

10 years ago

2.1.0

10 years ago

1.1.0

10 years ago

1.0.1

10 years ago

1.0.0

10 years ago