koa-requestid v2.2.1
koa-requestid
Status
Installation
Install the package via yarn:
❯ yarn add koa-requestidor via npm:
❯ npm install koa-requestid --saveUsage
Use koa-requestid as a middleware for a koa app. By default, it generates a unique uuid (v4) and exposes it on the response via the Request-Id header. The id is also saved as part of the request state.
In the following example, the generated uuid is manually exposed on the body for debugging purposes:
const Koa = require('koa');
const requestId = require('koa-requestid');
const app = new Koa();
app.use(requestId());
app.use(async ctx => {
ctx.body = ctx.state.id;
});
app.listen(3000);Execute a request to the running app:
❯ curl -v http://localhost:3000
< HTTP/1.1 200 OK
< Request-Id: cc0f12c7-f3b6-4c86-94c2-8c4ce7751651
cc0f12c7-f3b6-4c86-94c2-8c4ce7751651Sometimes it is also useful to pass a custom id via a request header or query string, specifically in debugging sessions. Please note that the input id is not sanitized, so the usual precautions apply.
Using the above snippet to send a custom via the default Request-Id header:
❯ curl -v -H 'Request-Id: foobar' http://localhost:3000
< HTTP/1.1 200 OK
< Request-Id: foobar
foobaror using a query string parameter (default is requestId):
❯ curl -v http://localhost:3000?requestId=foobar
< HTTP/1.1 200 OK
< Request-Id: foobar
foobarConfiguration
Arguments
options(object): A dictionary of options.
Options
expose(string|false): The name of the header to expose the id on the response, orfalseto disable.header(string|false): The name of the header to read the id on the request, orfalseto disable.query(string|false): The name of the header to read the id on the query string, orfalseto disable.
Example:
const Koa = require('koa');
const requestId = require('koa-requestid');
const app = new Koa();
app.use(requestId({
expose: 'X-Request-Id',
header: 'X-Req-Id',
query: 'request-id'
}));This configuration would expose every generated request id via the X-Request-Id response header and accept a custom id via the X-Req-Id header or request-id query string parameter.
Tests
❯ yarn testRelease
npm version [<new version> | major | minor | patch] -m "Release %s"License
MIT