ech

3.1.1 • Public • Published

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.

Readme

Keywords

Package Sidebar

Install

npm i ech

Weekly Downloads

4

Version

3.1.1

License

BSD-3-Clause

Last publish

Collaborators

  • chrisdotcode