npm.io
0.5.0 • Published 10 years ago

proquest

Licence
MIT
Version
0.5.0
Deps
1
Vulns
0
Weekly
0

Build Status npm version

Proquest (Promise Request)

Ultra light wrapper around XHR requests that returns Promises for composition.

Installation

Designed for usage with CJS, namely via browserify.

npm install proquest --save-dev

Then simply require it:

var Request = require('proquest').Request;

Usage

Proquest takes many of its design cues from superagent, but in an extremely paired back way.

// Composing a request

var Request = require('proquest').Request;
var request = new Request('POST', 'https://example.com/things');

request
  .set('Accept', 'application/json')
  .set('Content-Type', 'application/json')
  .set('Authorization', 'token abcdefg1234567')
  .send({ name: 'New Thing', tags: ['a', 'b', 'c'] })
  .end()
  .then(function(response) {
    console.log('Success!', response.body);
  }, function(response) {
    console.log('Failure!', response.status);
  });

Often in the context of an application each request will share most headers. This can be achieved easily with a partial request:

// Compose a request using method, url, data, or header options.
var partial = Request.partial({
  header: {
    'Authorization' : 'token abc123'
    'Content-Type'  : 'application/json'
    'Accept'        : 'application/json'
  }
});

// Store the partial request for use throughout the application.
MyApp.request = partial;

// Elsewhere, use the request by invoking and completing it.
var request = partial({ method: 'HEAD', url: '/status' });

Inject a default error handler into all requests:

Request.partial({
  catch: function(response) {
    console.log('failed with a status of: ' + response.status);
  }
});

Notes

Proquest expects a modern XHR api underneath. That means IE8 and below isn't going to work.

Keywords