UNPKG

express-multi-hijack

Version:

Multi Hijack Response data on ExpressJS

127 lines (92 loc) 2.89 kB
# Express Multi Hijack Simply hijack or intercept your express response via middleware. ## Installation > npm i express-multi-hijack ## How it works This library works by overriding `res.end` function, still maintaining the original one once all of the "hijack" functions are executed. So it is safe to use with Your own custom `res.end` implementation. ## Example 1. Simple Tracing Response Body ```js const Express = require('express'); const { Hijack } = require('express-multi-hijack'); const app = Express() app.use(Hijack({ json: true, handler: (body, req, res, next) => { console.info('got response body', body) // { "foo": "bar" } } })) app.get('/bar', (req, res, next) => { res.json({ bar: 'foo', }) }) app.get('/foo', (req, res, next) => { res.json({ foo: 'bar', }) }) app.listen(8080) ``` Based on the example above, the hijack handler will print `{ "foo": "bar" }` on request to [localhost:8080/foo](http://localhost:8080/foo) and `{ "bar": "foo" }` when requesting to [localhost:8080/bar](http://localhost:8080/bar). 2. Intercept and Override Response Body ```js const Express = require('express') const { Hijack } = require('../dist') const app = Express() app.use(Hijack({ json: true, handler: (body, _, res) => { console.info('body:', body) res.json({ message: 'Today is the bad day' }) } })) app.get('/', (_, res) => { return res.json({ message: 'Today is a Great Day!' }) }) app.listen(8080) ``` The code above will change the response `message` from `'Today is a Great Day!'` to `'Today is the bad day'` 3. Multiple Hijack, early hijack function is the highest priority ```js const Express = require('express') const { Hijack } = require('../dist') const app = Express() // hijack on monday app.use(Hijack({ json: true, handler: (body, _, res) => { if (body.today === 'Monday') { res.json({ ...body, message: 'What a lazy day' }) } } })) // hijack on friday app.use(Hijack({ json: true, handler: (body, req, res) => { if (req.path === '/friday') { res.json({ ...body, message: 'What a wondeful day' }) } } })) app.get('/', (_, res) => res.json({ message: 'No Hijack' })) app.get('/monday', (_, res) => { return res.status(200).json({ today: 'Monday', message: 'Today is a Great Day!' }) }) app.get('/friday', (_, res) => { return res.status(200).json({ message: 'Today is a Great Day!' }) }) app.listen(8080) The code above will intercept and change response for [localhost:8080/monday](http://localhost:8080/monday) to `{today: 'Moday', message: 'What a lazy day'}`, and [localhost:8080/friday](http://localhost:8080/friday) to `{message: 'What a wondeful day'}` ``` For more examples please visit [example](https://github.com/slaveofcode/express-multi-hijack/tree/master/example) directory. ## LICENSE MIT