Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/prestaul/express-json-transform
Express middleware for intercepting and transforming json responses
https://github.com/prestaul/express-json-transform
Last synced: 13 days ago
JSON representation
Express middleware for intercepting and transforming json responses
- Host: GitHub
- URL: https://github.com/prestaul/express-json-transform
- Owner: Prestaul
- License: mit
- Created: 2016-05-01T20:35:13.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2016-05-01T23:16:51.000Z (over 8 years ago)
- Last Synced: 2024-11-06T21:47:10.663Z (2 months ago)
- Language: JavaScript
- Size: 2.93 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# express-json-transform
Express middleware for intercepting and transforming json responses.
## Installation
```bash
npm i -S express-json-transform
```## Usage
A transform is passed an object from the response and it returns a replacement.
### Basic usage `jsonTransform( transform )`
Middleware can be created by passing a transform function. The transform function will be called with a response object prior to json serialization and it must return a replacement object.
```js
var express = require('express'),
jsonTransform = require('express-json-transform');// Create a transform to remove sensitive data from responses
var cleanJson = jsonTransform(function(json) {
delete json.sensitiveInfo;
return json;
});var app = express();
// The middleware can be used anywhere express accepts middleware
app.use(cleanJson);
```Now when your route handlers call `res.json({ ... })` or `res.send({ ... })` the objects will be transformed before being sent to the client.
### Conditional usage `jsonTransform( condition, transform )`
Middleware can optionally be created with a function that evaluates whether or not to run the transform. The condition function will be called with a request object and a response object and must return a boolean indicating whether or not the transform should run.
```js
var express = require('express'),
jsonTransform = require('express-json-transform');// Create a transform to conditionally remove sensitive data from responses
var cleanJson = jsonTransform(function(req, res) {
return !!req.params.includeUser;
}, function(json) {
delete json.sensitiveInfo;
return json;
});var app = express();
// The middleware can be used anywhere express accepts middleware
app.use(cleanJson);
```### Middleware location
Express will let you define middleware in several different places. Each of these uses is valid:
```js
var express = require('express'),
Router = express.Router;var transform = require('express-json-transform')(function(json) {
// modify the response...
return json;
});var app = express();
app.use(transform) // application-level middleware
app.get('/path', transform, handler); // middleware for specific route
app.get('/path', [otherMiddleware, transform, handler]) // stacked with other middlewarevar router = new Router();
router.use(transform) // router-level middleware
router.get('/path', transform, handler); // middleware for specific route
router.get('/path', [otherMiddleware, transform, handler]) // stacked with other middleware
app.use(router);
```