1.0.0 • Published 4 years ago

node-fetch-client v1.0.0

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

node-fetch-client

NodeJS Rest API Client module wrapping infamous node-fetch

Why this module

Intention behind this module is expose cleaner API by wrapping node-fetch and provide a simpler timeout support for API calls.

This module supports working with JSON type and Binary data Buffer type simply because those are commonly used data types across networks.

How to use

const APIClient = require('node-fetch-client');

const api = new APIClient({ headers: { 'content-type': 'application/json '}});
 
  ...

  try {

    const result = await api.get('http://localhost:3000/');

  } catch(error) {

  }

API

New object needed to created (by providing common configs, if any) to call relevant Http method.

const APIClient = require('node-fetch-client');

const api = APIClient(commonConfigs);

commonConfigs : Any allowed configs to node-fetch API. These are common configs.

Call the relevant Http method with the url and specific configs.

const result = api.get('http://localhost:3000', configs);

configs : Any allowed configs to node-fetch API. These are method and API call relevant specific configs.

result will the json response from the API call.

Allowed Http method

GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS

api.(get|post|put|patch|delete|head|options|download*)

*Special method - download : This method can be used to handle binary data in a response.

Default Http method of download is POST but this can be changed by passing method to configs object.

CommonConfig and configs

At final API caller stage, commonConfigs and configs are merged. Example is given below

const commonConfig = {
 headers: {
   'content-type': 'application/json',
   'user-agent': 'api-caller',
 },
 timeout: 20000,
}

const configs = {
  headers: {
   'accept': 'application/json'
  },
  timeout: 50000,
}

// Final configs will be

{
    headers: {
       'content-type': 'application/json',
       'user-agent': 'api-caller',
        'accept': 'application/json'
     },
     timeout: 50000, // precedence given to configs
}

Timeout

10s default timeout is provided. timeout can be passed commonConfigs or configs objects as required.

Limitations

As described earlier support is given to Json and binary formats only. Further result from API calls will be the Json or binary content only.

If the raw responseobject required, this API can be extended.