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 = var express = var app = moduleexports = { /* Custom respond logic here */ } var defaultLanguage = 'en'var customMessages = {} app
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: 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 /* Comes with standard types built-in, but you can also provide your own */ keyword: string /* Keyword that failed validation */ message: string /* Merged with i18n when available */ id?: string /* A unique identifier for the instance of this error */ dataPath?: string /* Natural path to the error message (E.g. JSON Pointers when using JSON) */ data?: any /* The data that failed validation */ schema?: any /* The schema value that failed validation */ detail?: string /* Additional details about this specific error instance */ meta?: name: string: string /* Meta data from the error (XML validation provides a code, column, etc.) */
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