Fetch Interceptor
Written in Typescript
Fetch Interceptor is a small Typescript package that allows for the interception of requests made via Node-Fetch.
Usage
To install
$ npm i @americanairlines/fetch-interceptor
Create your interceptor
const interceptor = require("@americanairlines/fetch-interceptor");
function beforeFetch(requestInfo) {
let { requestId, method, url, params, headers, body } = requestInfo;
console.log("RequestId " + requestId);
console.log("Request Type " + method);
console.log("Request Url " + url);
console.log("Request Params " + params);
console.log("Request Headers " + headers);
console.log("Request Body" + body);
}
function afterFetch(requestInfo) {
let { requestId, method, url, params, headers, body } = requestInfo;
console.log("RequestId " + requestId);
console.log("Request Type " + method);
console.log("Request Url " + url);
console.log("Request Params " + params);
console.log("Request Headers " + headers);
console.log("Request Body" + body);
}
module.exports.default = interceptor(beforeController, afterController);
Using the interceptor.
It's important to import and use the interceptor you created in the same way you would use fetch. @americanairlines/fetch-interceptor
just intercepts fetch. It accepts all the same arguments as node-fetch
.
const fetch = require("../path/to/interceptor");
async function foo() {
let bar = await fetch("https://some-site.com");
}
foo();
API
requestInfo
This is the logging object with the request info that the handler functions have access to.
Note
This package was designed to work with @americanairlines/controller-interceptor
. Using this package in combination with @americanairlines/controller-interceptor
provides the ability to trace connections between services with a TraceId. This TraceId does not have to be generated by @americanairlines/controller-interceptor
. The requestId
argument can be any string.
RequestInfo = {
requestId: string;
method: string;
url: string;
params: Object;
headers: Object;
body: Body;
}
beforeFetch/afterFetch
These functions are not passed the actual body or headers objects, just copies of them. You are not able to mutate these fields in the handler functions.
Author
Chandler Barlow
Collaborators
Steven Paulino
License
MIT