Standard JSON Messages
A little wrapper library to standardize messages returned from JSON api's. It is intended to standardize application level messaging for things like errors, success messages and other application level signaling. This format is a superset of the JSON-API spec for error messages but adds on a few things so extend it to other message types.
The Format
_messages
will is an array of objects at the top level of the response- Each entry in the
_messages
array will have these properties:- Required fields:
code
: A application unique camel case stringdetail
: A human readable and translatable string to display to the end userlevel
: A severity description;error
,warning
orsuccess
- Optional fields:
id
: A unique id for this message instancestatus
: The status code which should be returned with this messagetitle
: A title for the messagemeta
: An object with extra context for the messagesource
: An object with context for the source of the message, like error stack trace or the related fieldlinks
: An object with links to related context, like a page describing the error
- Required fields:
Examples
{
"_messages": [{
"code": "resourceNotFound",
"detail": "These are not the resources you are looking for."
"level": "error"
}]
}
{
"_messages": [{
"code": "invalidInput",
"detail": "The input you provided is invalid"
"level": "error",
"source": {
"field": "input"
}
}]
}
{
"_messages": [{
"code": "duplicateKetInsert",
"detail": "Duplicate key"
"level": "error",
"title": "Database insert error"
"status": "500",
"meta": {
"key": 123
}
}]
}
Usage
$ npm install --save json-messages
const http = const messages = const server = httpserver
- I18n: The
message
field is human readable and can be translated based on thecode
as a key. - Debugging: In production,
code
field can be used to track down errors. In deverror
levels include a stack. - Message Metadata: Standardized way to include metadata without mucking with the message guarantees.
- Browser compatible: Helpful to keep your API's and clients speaking the same language.