Request Error Handler
Standardized error handler for rendering API responses with i18n. Automatically renders with support for JSON, XML, HTML and plain text.
Installation
npm install request-error-handler --save
Usage
For the error handler to work, you must emit an error with an array of requestErrors
. The format for requestErrors
is defined below as an array of RequestError
s.
var errorHandler = require('request-error-handler')
var express = require('express')
var app = module.exports = express()
function responder (req, res, error, stack) { }
var defaultLanguage = 'en'
var customMessages = {}
app.use(errorHandler(responder, defaultLanguage, customMessages))
Options
responder
Provide a custom error formatter with optional stack depending on environment (default: errorHandler.responder
)defaultLanguage
Override the default i18n language of English (default: en
)customMessages
Merge custom i18n messages with default messages (default: {}
, see interface below)
The messages interface is as follows:
interface CustomMessages {
[type: string]: {
[keyword: string]: {
[language: string]: (error: RequestError) => string
}
}
}
Creating Errors
The only restriction on errors that can be formatted using request-error-handler is that the error instance has an array of error objects on the requestErrors
property. Every error object MUST follow the following interface:
interface RequestError {
type: 'json' | 'form' | 'headers' | 'query' | 'xml' | string
keyword: string
message: string
id?: string
dataPath?: string
data?: any
schema?: any
detail?: string
meta?: { [name: string]: string }
}
To automatically create a compatible error instance, use errorHandler.createError
and pass an array of errors with an option status
number.
License
Apache License 2.0