@americanairlines/fetch-interceptor v1.0.14
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; // The trace Id of the request
method: string; // The http method of the request
url: string; // The url that the request was made to
params: Object; // The params passed to the request
headers: Object; // The header object of the incoming/outgoing request
body: Body; // The body of the incoming/outgoing request
}
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.