npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

ech

v3.1.1

Published

Echo Entire HTTP Requests in JSON.

Downloads

52

Readme

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 [email protected]" \
	-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 [email protected]",
				"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 protected] password=1234
{
    "body": {
        "email": "[email protected]",
        "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.