req-interceptor
monkey patches the global fetch
and ajax(XMLHttpRequest)
method and allows you the usage in Browser, Node.
npm install req-interceptor --save
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()
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()
MIT