1.0.3 • Published 4 years ago

phin-retry v1.0.3

Weekly downloads
3
License
MIT
Repository
github
Last release
4 years ago

phin-retry

Build Coverage

The ultra-lightweight Node.js HTTP client.

This is a wrapper around Phin that adds support for retry & looks like request-promise.

Install

npm install phin-retry

Usage

const request = require('phin-retry');

// should be used in async context
const response = await request.get('https://jsonplaceholder.typicode.com/posts/1');

await request.post({
    url: 'http://localhost:9393/api/post',
    body: { msg: 'input' },
    retry: 3,
    delay: 500
  });

// custom retry, error & delay strategy
const response = await request.delete({
    url: 'http://localhost:9393/api/delete',
    auth: {
      user: 'name',
      pass: 'secret'
    },
    errorStrategy: ({response, error, options}) => {
        if (error) return true;
        if (response.statusCode >= 400) {
          return false;
        }
        return true;
      },
    retryStrategy: ({response, error, options}) => {
        if (error) return true;
        if (options.method === 'POST') return false;
        if (response.statusCode >=200 && response.StatusCode < 300) {
          return false;
        }
        return true;
      },
    delayStrategy: ({response, error, options, delay}) => {
        if (error) return 5000;
        return 2000;
      },
  });
  • It supports get, post, put, delete, patch HTTP methods.
  • By default, this library will retry once on failure (StatusCode >= 500 & network errors) with a delay of 100 or 1000 milliseconds. Override this behavior with custom retry strategy function.
  • Responses with status codes < 200 & >= 300 are thrown as errors. Override this behavior with custom error strategy function.
  • All options from phin are supported. Refer Phin for more usage examples.
  • Access underlying phin library through request.phin.

API

Defaults

Access default options through request.defaults.

OptionTypeDescription
retrynumbermax no of times to retry (1)
delaynumberdelay between retries (100ms)
networkErrorDelaynumberdelay for network errors (1000ms)
retryStrategyfunctiondefault retry strategy function
delayStrategyfunctiondefault delay strategy function
errorStrategyfunctiondefault error strategy function

Options

It supports all options from phin, refer Phin for more details.

MethodTypeDescription
urlstringrequest url
qsobjectquery parameters
authobjectauthentication object
headersobjectheaders object
retrynumbermax no of times to retry
delaynumberdelay between retries
bodyanyequivalent to data in phin
fullResponsebooleanreturns full phin response
retryStrategyfunctioncustom retry strategy function
delayStrategyfunctioncustom delay strategy function
errorStrategyfunctioncustom error strategy function