Install the package via yarn
:
❯ yarn add koa-requestid
or via npm
:
❯ npm install koa-requestid --save
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-8c4ce7751651
Sometimes 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
foobar
or using a query string parameter (default is requestId
):
❯ curl -v http://localhost:3000?requestId=foobar
< HTTP/1.1 200 OK
< Request-Id: foobar
foobar
options
(object): A dictionary of options.
expose
(string|false): The name of the header to expose the id on the response, orfalse
to disable.header
(string|false): The name of the header to read the id on the request, orfalse
to disable.query
(string|false): The name of the header to read the id on the query string, orfalse
to 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.
❯ yarn test
npm version [<new version> | major | minor | patch] -m "Release %s"
MIT