bhttp HTTP Client

1.2.8 · abandoned · verified Wed Apr 22

bhttp is a Node.js HTTP client library designed to provide a sane and intuitive API, offering Streams2 support, automatic payload detection (URL-encoded, multipart/form-data, stream, Buffer, JSON), and robust session management with automatic cookie handling. It differentiates itself from alternatives like the core `http` module, `request`, `needle`, and `hyperquest` by addressing common issues such as low-level API complexity, agent pool blocking, and poor documentation. Key features include easy-to-use promises or nodebacks, multipart/form-data support with Streams2, and progress events for uploads and downloads. The package is currently at version 1.2.8, but its npm and GitHub activity indicate it has been abandoned for several years, making new releases unlikely.

Common errors

Warnings

Install

Imports

Quickstart

This quickstart demonstrates making both promise-based and nodeback-style GET requests. It includes a critical workaround for bhttp's default HTTPS limitation, illustrating how to use a custom `https.Agent`.

const Promise = require("bluebird");
const bhttp = require("bhttp");
const https = require('https');

// Workaround for bhttp's lack of default HTTPS agent
const httpsAgent = new https.Agent({ rejectUnauthorized: false }); // WARNING: Do not use rejectUnauthorized: false in production

Promise.try(function() {
  // Using the custom HTTPS agent for a secure request (example with a test endpoint)
  return bhttp.get("https://icanhazip.com/", { agent: httpsAgent });
}).then(function(response) {
  console.log("Your IP is:", response.body.toString());
}).catch(function(err) {
  console.error("Error fetching IP:", err.message);
});

// Example using nodebacks for a simple HTTP request (no HTTPS agent needed here)
bhttp.get("http://example.com/data", {}, function(err, response) {
  if (err) {
    console.error("Error with nodeback request:", err.message);
    return;
  }
  console.log("Nodeback response status:", response.statusCode);
});

view raw JSON →