Simply return objects from your route handler functions in express.
Instead of:
app.post('/auth/', (req, res) => {
res.json({ success: false });
});
do:
const JSONHandler = require('express-json-handler');
app.post('/auth/', JSONHandler(async (req, res) {
return { success: false };
}));
return
instead ofres.json()
async
functions properly handled- errors properly delivered in JSON responses
- browser cache disabled
npm install express-json-handler
express-json-handler properly supports async functions in Express 4. This won't work as expected in Express 4:
app.post('/auth/', async (req, res) {
non_existing();
});
express-json-handler catches errors on your async handler and in that case { success: false }
is returned. You can change the default reply:
const JSONHandler = require('express-json-handler');
JSONHandler.DEFAULT_FAIL_RESPONSE = {
message: "Internal server error"
};
app.post('/auth/', JSONHandler(async (req, res) {
non_existing();
}));
You can still send direct responses from your handler code, either with res.send()
or even res.json()
if you like. Return nothing or null from your handler in case you do.
By default express-json-handler sends cache disabling headers in responses, namely:
Cache-Control: private, max-age=0, no-cache, must-revalidate
Pragma: no-cache
You can change that behavior:
const JSONHandler = require('JSONHandler');
JSONHandler.DEFAULT_HEADERS = {
'Cache-Control': 'max-age=3600'
};
Tests: npm run test
or mocha test.js
.
Liner: npm run lint
or eslint index.js
.
Author: Egor Egorov me@egorfine.com.
License: MIT