1.0.0 • Published 8 months ago

axios-auth-middleware v1.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
8 months ago

Axios middleware

This middleware is specifically designed for complex React applications, ensuring secure handling of HTTP requests and responses. It streamlines request management by providing reusable Axios instances with custom configurations and robust error handling. It simplifies the process of managing both authenticated and non-authenticated API calls. The privateAxios function improves authenticated requests by integrating token refresh handling and offering user-friendly error messages, while publicAxios provides a simple configuration for general HTTP requests.

Features

  • Custom Request Transformation: Applies a dateTransformer function to format Date objects as ISO 8601 strings for consistent API request data.
  • Authentication Management: Automatically retries failed requests with a 401 Unauthorized status using a customizable handleAuthError function for handling token refresh or re-authentication.
  • Error Handling: Provides detailed error messages for network failures.Ensures general errors return a clear, standardized response.
  • Basic Configuration: Creates an Axios instance with standard options like baseURL and timeout, suitable for requests that don't require authentication.

Installation

Install the package with npm:

  npm install axios-auth-middleware

Parameters

baseURL: The base URL for the Axios instance.

timeout : The timeout duration for the request in milliseconds.

handleAuthError : (optional for privateAxios): A function to handle retry logic for 401 Unauthorized responses.

Usage/Examples

  • privateAxios:
import { privateAxios } from 'axios-auth-middleware';

const privateInstance = privateAxios({
  baseURL: 'https://api.example.com',
  handleAuthError: async (instance, originalRequest) => {
    // Logic to handle token refresh
    const newToken = await refreshToken();
    originalRequest.headers['Authorization'] = `Bearer ${newToken}`;
    return instance(originalRequest);
  },
  timeout: 5000,
});

privateInstance.get('/protected-route')
  .then(response => console.log(response.data))
  .catch(error => console.error(error));
}
  • publicAxios:
import { publicAxios } from 'axios-auth-middleware';

const publicInstance = publicAxios({
  baseURL: 'https://api.example.com',
  timeout: 5000,
});

publicInstance.get('/public-route')
  .then(response => console.log(response.data))
  .catch(error => console.error(error));

Authors

  • Shivaji : (Sr. React Developer)
  • Shyamal : (Sr. React Developer)

License

MIT