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 🙏

© 2026 – Pkg Stats / Ryan Hefner

send-request

v1.0.5

Published

Lightweight HTTP client for Node.

Readme

Send Request

Build Status Test Covarage Latest Version

Lightweight HTTP client for Node.

Installation

$ npm install send-request

Usage

Send HTTP GET request:

const sendRequest = require("send-request");

(async () => {
  const response = await sendRequest("https://httpbin.org/json");

  console.log(`Status Code: ${response.statusCode}`);
  console.log({ headers: response.headers });
  console.log(response.body); // Response as a string

  // If response's content type is a JSON, you get the parsed object.
  console.log(response.json);
})();

Recipes

Handling Error

const sendRequest = require("send-request");

(async () => {
  try {
    const response = await sendRequest("https://httpbin.org/status/400");
  } catch(error) {
    console.log(error.message);

    // If it's an HTTP error, it will have response property.
    if (error.response) {
      console.log(error.response.statusCode); // 400
      console.log(error.response.statusMessage);
      console.log(error.response.headers);
      console.log(error.response.body);
    }
  }
})();

Send HTTP POST Request with Body

If you don't set the content-type and content-length headers, it will be automatically added. The content-type will be set to application/x-www-form-urlencoded.

const sendRequest = require("send-request");

(async () => {
  const response = await sendRequest("https://httpbin.org/anything", {
    method: "POST",
    body: {
      foo: "bar"
    }
  });

  console.log(response.body);
})();

Send HTTP Request with JSON Body

If you don't set the content-type and content-length headers, it will be automatically added. The content-type will be set to application/json.

const sendRequest = require("send-request");

(async () => {
  const response = await sendRequest("https://httpbin.org/anything", {
    method: "POST",
    body: {
      foo: "bar"
    },
    json: true // Must be set to true
  });

  console.log(response.json);
})();

Sending File with FormData

You pass the FormData instance as a body. If you don't set the content-type and content-length headers, it will be automatically added. The content-type will be set to multipart/form-data. The json option won't have any effect.

const fs = require("fs");
const sendRequest = require("send-request");
const FormData = require("form-data");

(async () => {
  const file = fs.createReadStream("./test.txt");

  const form = new FormData();
  form.append("foo", "bar");
  form.append("my_file", file);

  const response = await sendRequest("https://httpbin.org/anything", {
    method: "POST",
    body: form
  });

  console.log(response);
})();

API

sendRequest(url, [{
  method,
  headers,
  auth: {
    username,
    password
  },
  body,
  json,
  encoding
}])

Parameters

  • url (String): The URL to send the HTTP request to.
  • method (optional String): The HTTP method to use, default to GET.
  • headers (optional Object): The request headers to send.
  • auth.username (optional String): The username for HTTP basic auth.
  • auth.password (optional String): The password for HTTP basic auth.
  • body (optional Object|FormData): The request body to send. It can be a plain JavaScript object or an instance of FormData.
  • json (optional Boolean): Set to true if you want to send the request body with application/json content type. Default to false, which means that the request body will be sent as application/x-www-form-urlencoded. Note that you can still override the content type using the headers option.
  • encoding (optional String|Null): The encoding to decode the incoming response. If set to null, the response's body will be a Buffer instance.

Returns

It returns a Promise which when resolved contains a response object. Here's an example of a reponse object:

{
  statusCode: 200,
  statusMessage: "OK",
  headers: {
    "content-type": "application/json"
  },
  body: '{"foo": "bar"}',
  json: {
    foo: "bar"
  }
}
  • statusCode (Number): The HTTP status code.
  • statusMessage (Number): The HTTP status message (reason phrase).
  • headers (Object): The response's headers.
  • body (String): The response's body.
  • json (Object): The parsed JSON body. It only exist if the response's content type is application/json.

License

MIT © Risan Bagja Pradana