The Wayback Machine - https://web.archive.org/web/20201122134837/https://github.com/forthealllight/request-intercept
Skip to content
master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
src
 
 
 
 
 
 
 
 
 
 
 
 

README.md

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

Releases

No releases published

Packages

No packages published
You can’t perform that action at this time.