Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

forthealllight/request-intercept

Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
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

 
 
 

Contributors

Morty Proxy This is a proxified and sanitized view of the page, visit original site.