micro-boom
v2.0.0
Published
Wraps errors in micro with Boom
Downloads
18
Readme
micro-boom
Wraps errors in micro
services Boom
errors.
Example Responses
{
"error": "Unauthorized",
"message": "Not authenticated",
"statusCode": 401
}
{
"data": {
"reason": "Username is wrong"
},
"error": "Unauthorized",
"message": "Not authenticated",
"statusCode": 401
}
Installation
npm install --save micro-boom
Or even better
yarn add micro-boom
Import and Usage Example
const { handleErrors, createError } = require('micro-boom')
module.exports = handleErrors(async function (req, res) {
throw createError(401, 'Not authenticated', {
reason: 'Bad password'
})
})
API
handleErrors
Catches error from an async function, wraps them in a Boom error object and generates a JSON response.
The status code of an error is determined by three factors, in order:
- Status code is set to
err.output.statusCode
- If not set, error is inferred from
res.statusCode
- Default to HTTP 500 (also defaults to HTTP 500 if status is < 400)
:rotating_light: TAKE NOTE :rotating_light:
All HTTP 500 errors have their user provided message removed for security reasons.
Parameters
fn
Function Async function, your normalmicro
logic.dump
Boolean Optional. Dumpserr.stack
tostderr
if true
Examples
const { handleErrors } = require('micro-boom')
// Returns HTTP 500
module.exports = handleErrors(async function (req, res) {
throw Error('Uh-oh, something bad happened.')
})
const { handleErrors } = require('micro-boom')
// Returns HTTP 401
module.exports = handleErrors(async function (req, res) {
res.statusCode = 401
throw Error('Unauthorized')
})
Returns an async Function.
createError
Alias for Boom#create(statusCode, [message], [data])
.
Parameters
statusCode
Number HTTP status code, must be >= 400message
String An optional error message.data
[Any] Some optional error metadata, serialized withJSON.stringify
.
Examples
const { handleErrors, createError } = require('micro-boom')
// Message defaults to what corresponds to the HTTP error code
module.exports = handleErrors(async function (req, res) {
throw createError(500)
})
const { handleErrors, createError } = require('micro-boom')
// HTTP 401: Unauthorized
module.exports = handleErrors(async function (req, res) {
throw createError(401, 'Unauthorized')
})
const { handleErrors, createError } = require('micro-boom')
// HTTP 401: Unauthorized with metadata,
// set in `.data` of the response.
module.exports = handleErrors(async function (req, res) {
throw createError(401, 'Unauthorized', {
reason: 'Bad password',
foo: 'bar'
})
})
Returns an async Function.