Minimalistic and simplistic HTTP(S) client. No dependencies, under 100 SLOC, 100% coverage.
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
test
.gitignore
.npmignore
.travis.yml
README.md
index.js
package.json

README.md

Minimal HTTP client library

NPM Build status Coverage Status js-standard-style Dependencies devDependencies

Minimal simple HTTP client with promises.
Supports HTTP, HTTPS and common methods GET, POST, PUT, PATCH, DELETE.
Includes timeout, query string, form data, JSON helpers.
No dependencies, under 100 SLOC.

Install

npm install --save http.min

Examples

GET

var http = require('http.min')
http('https://httpbin.org/get').then(function (result) {
  console.log('Code: ' + result.response.statusCode)
  console.log('Response: ' + result.data)
})

POST

JSON

var http = require('http.min')
http.post('https://httpbin.org/post', {data: 'hello'}).then(function (result) {
  console.log('Code: ' + result.response.statusCode)
  console.log('Response: ' + result.data)
})

Form urlencoded

data parameter is a string.

var http = require('http.min')
http.post('https://httpbin.org/post', 'data=hello').then(function (result) {
  console.log('Code: ' + result.response.statusCode)
  console.log('Response: ' + result.data)
})

JSON

var http = require('http.min')
http.json('https://httpbin.org/get').then(function (data) {
  console.log('Response:', data.url)
})

Advanced

Functions also accept http.request options object.

var http = require('http.min')
var options = {
  protocol: 'https:',
  hostname: 'httpbin.org',
  path: '/get',
  headers: {
    'User-Agent': 'Node.js http.min'
  }
}
http.json(options).then(function (data) {
  console.log('Response:', data)
})

Helpers

var http = require('http.min')
var options = {
  uri: 'https://httpbin.org/post',
  // timeout in ms
  timeout: 1000,
  // query string helper
  query: {
    hello: 'test'
  },
  // form urlencoded
  form: {
    test: 'ok'
  },
  // handle JSON data
  json: true
  // send JSON data and expect JSON response
  json: {
    this: 'is data'
  },
  request: function (req) {
    // hook to manipulate request before being sent
    // instace of node http.ClientRequest
    req.setTimeout(2000)
    req.on('upgrade', ...)
  }
}
http.post(options).then(function (result) {
  console.log('Code: ' + result.response.statusCode)
  console.log('Response:', result.data)
})

License

ISC