Built with ❤︎ by Hiukky
# Using NPM
npm i http-handler-response
# Using YARN
yarn add http-handler-response
The http-handler-response provides three main functions. createException
, createResponse
and handlerError
.
The createException
function is the function responsible for formulating your return messages in unsuccessful requests. It follows the RFC-7807 standard.
// Object with response specifications
payload: {
code: number | string, // HTTP status code 4xx to 5xx
type?: string, // URL for a document describing the error condition
title?: string, // Short and descriptive information
detail: string, // Legible error description
instance?: string, // URI exclusive for or specific error
}
import { createException, handlerError } from 'http-handler-response'
import User from 'models/User'
class UserController {
async index(request, response) {
try {
const user = await User.find(1)
if (!user)
createException({
code: 404, // 404 or '404 - Not Found'
detail: 'The user informed is not registered.',
instance: '/users/1',
type: 'https://example.com/docs/users',
})
return user
} catch (error) {
handlerError(response, error)
}
}
}
{
status: 404,
title: 'Not found',
detail: 'The user informed is not registered.',
instance: '/users/1',
type: 'https://example.com/docs/users',
}
The createResponse
function is the function responsible for formulating your return messages in successful requisitions.
// HTTP Response Object
response: object
// Object with response specifications
payload: {
code: number | string, // HTTP status code 1xx to 3xx
title?: string, // Short and descriptive information
message?: string, // Legible action response
instance: string, // URI exclusive for or specific error
data: object // Back Data
}
import { createResponse, handlerError } from 'http-handler-response'
import User from 'models/User'
class UserController {
async store(request, response) {
try {
const data = request.only(['name', 'email'])
const user = new User()
user.name = data.name
user.email = data.email
await user.save()
return createResponse(response, {
code: 201, // 201 or '201 - Created'
message: 'Successful registered user.',
data: user,
}),
} catch (error) {
handlerError(response, error)
}
}
}
{
status: 201,
title: 'Created'
message: 'Successful registered user.'
data: {
id: 1,
name: 'User',
email: '[email protected]'
}
}
http-handler-response has custom handlers for handling errors for various web frameworks, such as AdonisJs
, Express
and KoaJs
. You can use it within your catch
block on each call or create custom middleware responsible for handling exceptions globally in the HTTP context.
import { handlerError } from 'http-handler-response'
import User from 'models/User'
class UserController {
async store(request, response) {
try {
// Your code..
} catch (error) {
handlerError(response, error)
}
}
}