1.2.2 • Published 3 years ago

custom-api-handler v1.2.2

Weekly downloads
-
License
ISC
Repository
-
Last release
3 years ago

api-handler

Custom package to handle API requests in JS using Axios

The package uses axios library to request APIs and uses local-storage for tokens (auth & refresh).

It uses custom-validation mehtods (isAccessTokenExpired & isRefreshTokenExpired) for token expiry check.

For auth-token:- save local-storage item as "X-Auth-Token".

For refresh-token:- save local-storage item as "Refresh-Token".


Installation

Install with NPM or Yarn.

Run npm install custom-api-handler or yarn add custom-api-handler to install the library.

Usage

Changes in version 1.2.2

Now, you can add refresh-token & access-token label names that will be present in server-response. The package will use these labels for all API-Requests with the name provided.

Refresh-token & Access-token labels will be saved after 64-bit encryption.

For Setting Label Names

import { apiHandler } from "custom-api-handler/lib";

const api = apiHandler;
api.setAccessTokenLabelName("authToken");
api.setRefreshTokenLabelName("refreshToken");

For Getting Label Names

import { apiHandler } from "custom-api-handler/lib";

const api = apiHandler;
console.log(api.getAccessTokenLabelName());
console.log(api.getRefreshTokenLabelName());

/*
  prints (default value):
    authToken
    refreshToken
*/

Note: These label names should be same as you received in server-response.

Server-Response

response:{ type:"SUCCESS", data:{ authToken:"ABCD", //The key here should be the access-token label name refreshToken:"EFGH" //The key here should be the refresh-token label name } }

Normal API-Request

import { apiHandler } from "custom-api-handler/lib";

const api = apiHandler;
api
  .requestApi(
    "api/users?page=2",
    "get",
    null,
    null,
    "https://reqres.in",
    false,
    false
  )
  .then((res) => {
    console.log(res.data);
  })
  .catch((error) => {
    console.log(error.message);
  });

/* prints API response:
{
    "page": 2,
    "per_page": 6,
    "total": 12,
    "total_pages": 2,
    "data": [
        {
            "id": 7,
            "email": "michael.lawson@reqres.in",
            "first_name": "Michael",
            "last_name": "Lawson",
            "avatar": "https://reqres.in/img/faces/7-image.jpg"
        },
    ],
    "support": {
        "url": "https://reqres.in/#support-heading",
        "text": "To keep ReqRes free, contributions towards server costs are appreciated!"
    }
}
 */

API-Request with requesting Refresh-Token API for adding new tokens (auth & refresh) before each API request.

import { apiHandler } from "custom-api-handler/lib";

const api = apiHandler;

api.setTokenLabel("ABC"); //Bearer name for adding tokens in header for request

api
  .rftWrapper(
    "api/users?page=2",
    "refreshToken",
    "GET",
    null,
    null,
    "https://reqres.in/url",
    "https://reqres.in/rftURL"
  )
  .then((res) => {
    console.log(res.data);
  })
  .catch((error) => {
    console.log(error.message);
  });

/* prints API response:
{
    "page": 2,
    "per_page": 6,
    "total": 12,
    "total_pages": 2,
    "data": [
        {
            "id": 7,
            "email": "michael.lawson@reqres.in",
            "first_name": "Michael",
            "last_name": "Lawson",
            "avatar": "https://reqres.in/img/faces/7-image.jpg"
        },
    ],
    "support": {
        "url": "https://reqres.in/#support-heading",
        "text": "To keep ReqRes free, contributions towards server costs are appreciated!"
    }
}
 */

API-Request with custom-validations for auth & refresh token expiry.

Note: If Auth-Token expires, Refresh-Token API will be requested for new tokens then normal API request is done.

Note: If Refresh-Token expires, Session-Expired error will be thrown and then reload.

Note: If concurrent API-Requests are made when refresh-token expires, then provide refresh-token check from backend.

From Server

Response-Body : { ... error_description:"Refresh token not found" }

API-Request will work properly.

import { apiHandler } from "custom-api-handler/lib";

const api = apiHandler;

api.setTokenLabel("ABC"); //Bearer name for adding tokens in header for request

api
  .reqAPIwithRFTWrapper(
    "api/users?page=2",
    "refreshToken",
    "GET",
    null,
    null,
    true,
    "https://reqres.in/url",
    "https://reqres.in/rftURL"
  )
  .then((res) => {
    console.log(res.data);
  })
  .catch((error) => {
    console.log(error.message);
  });

/* prints API response:
{
    "page": 2,
    "per_page": 6,
    "total": 12,
    "total_pages": 2,
    "data": [
        {
            "id": 7,
            "email": "michael.lawson@reqres.in",
            "first_name": "Michael",
            "last_name": "Lawson",
            "avatar": "https://reqres.in/img/faces/7-image.jpg"
        },
    ],
    "support": {
        "url": "https://reqres.in/#support-heading",
        "text": "To keep ReqRes free, contributions towards server costs are appreciated!"
    }
}
 */

Set Token Label

const { apiHandler } = require("custom-api-handler/lib");

const api = apiHandler;

api.setTokenLabel("ABC");
...

Use as a CommonJS package

const { apiHandler } = require("custom-api-handler/lib");
...
1.2.2

3 years ago

1.2.0

3 years ago

1.1.1

3 years ago

1.1.0

3 years ago

1.2.1

3 years ago

1.1.12

3 years ago

1.0.12

3 years ago

1.0.11

3 years ago

1.0.10

3 years ago

1.0.9

3 years ago

1.0.8

3 years ago

1.0.7

3 years ago

1.0.6

3 years ago

1.0.5

3 years ago

1.0.4

3 years ago

1.0.3

3 years ago

1.0.2

3 years ago

1.0.1

3 years ago

1.0.0

3 years ago