proquest

Micro XHR wrapper using promises

Usage no npm install needed!

<script type="module">
  import proquest from 'https://cdn.skypack.dev/proquest';
</script>

README

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.