Skip to content

Interceptor library for all requests , both native fetch and native ajax( or XMLHttpRequest )

Notifications You must be signed in to change notification settings

forthealllight/request-intercept

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

req-interceptor

req-interceptor monkey patches the global fetch and ajax(XMLHttpRequest) method and allows you the usage in Browser, Node.

Installation

npm install req-interceptor --save

Usage

Fetch intercept

Note: You need to require req-interceptor before you use fetch the first time.

Make sure you have a fetch compatible environment or added a appropriate polyfill.

import { fetchIntercept } from 'req-interceptor';

const unregister = fetchIntercept.register({
    request: function (url, config) {
        // Modify the url or config here
        return [url, config];
    },

    requestError: function (error) {
        // Called when an error occured during another 'request' interceptor call
        return Promise.reject(error);
    },

    response: function (response) {
        // Modify the reponse object
        return response;
    },

    responseError: function (error) {
        // Handle an fetch error
        return Promise.reject(error);
    }
});

// Call fetch to see your interceptors in action.
fetch('http://google.com');

// Unregister your interceptor
unregister();

if you want to clear all fetch listener array, you should:

    fetchIntercept.clear()

Ajax(XMLHttpRequest) intercept

  import { ajaxIntercept } from 'req-interceptor';
  const unregister = ajaxIntercept.register({
    requestAbout: function (xhr) {
        // xhr is real instance of a request
        //for example a post request ,the xhr includes
        xhr = {
          readyState: 4
          response: "{"success":0}"
          responseText: "{"success":0}"
          responseType: ""
          responseURL: "http://10.12.72.16:8080/extraInfo"
          responseXML: null
          status: 201
          statusText: "Created"
          timeout: 0
        }
    },
    requestError: function (xhr) {
        // xhr is real instance of a request
        
    },
    requestLoad: function (xhr) {
        // xhr is real instance of a request
    },
    requestLoadStart: function (xhr) {
        // xhr is real instance of a request
    },
    requestLoadEnd: function (xhr) {
        // xhr is real instance of a request
    },
    requestProgress: function (xhr) {
        // xhr is real instance of a request
    },
    requestOnreadyStateChange: function (xhr) {
        // xhr is real instance of a request
    },
    requestTimeout: function (xhr) {
        // xhr is real instance of a request
    }
});
// Call ajax to see your interceptors in action.
var client = new XMLHttpRequest();
client.open("POST", url);
client.setRequestHeader("Content-Type", "application/json; charset=utf-8");
client.send(JSON.stringify(data));
  
// Unregister your interceptor
unregister();

if you want to clear all ajax listener array, you should:

    fetchIntercept.clear()

License

MIT

About

Interceptor library for all requests , both native fetch and native ajax( or XMLHttpRequest )

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published