
Product
Announcing Socket Fix 2.0
Socket Fix 2.0 brings targeted CVE remediation, smarter upgrade planning, and broader ecosystem support to help developers get to zero alerts.
bad-request-error
Advanced tools
BadRequestError is a custom error constructor for HTTP errors (bad parameters, forbidden, unauthorized…).
It takes an error message as first parameter and optionally a HTTP error code as second parameter (defaults to 400
).
It requires at least Node V6 as it uses JavaScript classes.
npm install --save bad-request-error
In addition to the native Error
constructor properties, BadRequestError
adds httpStatus
and has its name
property set to BadRequestError
.
const BadRequestError = require('bad-request-error');
async function addComment(req, res) {
await const isCorrectPasswd = checkPasswd(req);
if (!isCorrectPasswd) return throw new BadRequestError('Your password looks wrong', 401);
// whatever you have to do if password is correct
}
It's very convenient to use it with an error handler function like the following:
// /lib/handleError.js
/**
* Send client err if it's validation error or log if it's a native or low level error
* @param { Object } err error object
* @param { Object } res
*/
function handleError(err, res) {
// send errmsg to user if it's a BadRequestError
if (res && err.name && err.name === 'BadRequestError') {
res.status(err.httpStatus).json({ error: err.message });
return;
}
// send http err if res object is provided
if (res) res.status(500).send('Server Error');
// if it's more low level, or if errorField isn't an error's propt
console.error(err); // or custom logger like winston
}
module.exports = handleError;
If using promises, the error is easily handled in a catch block.
const BadRequestError = require('bad-request-error');
const handleError = require('/lib/handleError');
// this function return a promise with the same BadRequestError as above if password doesn't match
// BadRequestError('Your password looks wrong', 401);
function checkPasswd(passwd) {}
function addComment(req, res) {
checkPasswd(req.body.passwd)
.then(() => {
// whatever you have to do if password is correct
})
.catch(err => handleError(err, res));
}
There's sure room for improvement, so feel free to hack around and submit PRs! Please just follow the style of the existing code, which is Airbnb's style with minor modifications.
To maintain things clear and visual, please follow the git commit template.
FAQs
Custom error for HTTP request
We found that bad-request-error demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Product
Socket Fix 2.0 brings targeted CVE remediation, smarter upgrade planning, and broader ecosystem support to help developers get to zero alerts.
Security News
Socket CEO Feross Aboukhadijeh joins Risky Business Weekly to unpack recent npm phishing attacks, their limited impact, and the risks if attackers get smarter.
Product
Socket’s new Tier 1 Reachability filters out up to 80% of irrelevant CVEs, so security teams can focus on the vulnerabilities that matter.