request-received

0.0.3 • Public • Published

request-received

build status code coverage code style styled with prettier made with lass license npm downloads

Route middleware for Koa and Express that adds a request received high-resolution timer and Date to the request object using easily accessible Symbols to prevent request object pollution. Made for Cabin.

Table of Contents

Install

npm:

npm install request-received

yarn:

yarn add request-received

Usage

Express

Symbols are automatically added to req object in route middleware:

const express = require('express');
const Cabin = require('cabin');
const requestReceived = require('request-received');
const responseTime = require('response-time');
const requestId = require('express-request-id');
 
const startAt = Symbol.for('request-received.startAt');
const startTime = Symbol.for('request-received.startTime');
 
const app = express();
const Cabin = new Cabin();
 
app.use(requestReceived);
 
app.use((req, res, next) => {
  console.log('startAt', req[startAt]); // `process.hrtime()`
  // [ 472542, 431456521 ]
  console.log('startTime', req[startTime]); // Date.now()
  // 1560499520000
  next();
});
 
app.use(responseTime());
app.use(requestId());
app.use(cabin.middleware);
 
app.listen();

Koa

Symbols are automatically added to ctx, ctx.req, and ctx.request objects in route middleware:

const Koa = require('koa');
const koaConnect = require('koa-connect');
const responseReceived = require('response-received');
const responseTime = require('response-time');
const requestId = require('express-request-id');
 
const startAt = Symbol.for('request-received.startAt');
const startTime = Symbol.for('request-received.startTime');
 
const app = new Koa();
const Cabin = new Cabin();
 
app.use(requestReceived);
 
app.use((ctx, next) => {
  console.log('startAt', ctx[startAt]); // `process.hrtime()`
  // [ 472542, 431456521 ]
  console.log('startTime', ctx[startTime]); // Date.now()
  // 1560499520000
 
  // note that the symbols are also accessible via:
  // ctx.req[startAt]
  // ctx.request[startAt]
  // ctx.req[startTime]
  // ctx.request[startTime]
 
  return next();
});
 
app.use(koaConnect(responseTime));
app.use(requestId());
app.use(cabin.middleware);
 
app.listen();

Contributors

Name Website
Nick Baugh http://niftylettuce.com/

License

MIT © Nick Baugh

Package Sidebar

Install

npm i request-received

Weekly Downloads

592

Version

0.0.3

License

MIT

Unpacked Size

16.9 kB

Total Files

6

Last publish

Collaborators

  • niftylettuce
  • titanism