http-error-expressjs v1.0.1
http-error-expressjs
Handling HTTP errors for your Express application easily.
Install
This is a Node.js module available through the
npm registry. Installation is done using the
npm install command:
npm install http-error-expressjsFeatures
Examples
CommonJS
var { HttpError } = require("http-error-expressjs")
var express = require("express")
var app = express()
// in the beginning of your app (important)
app.use(HttpError.initializer)
// your app routes or other middlewares
//sample APIs
app.get("/400", (req, res, next) => {
return HttpError.BadRequest()
})
app.get("/500", (req, res, next) => {
return HttpError.InternalServerError("something went wrong")
})
app.get("/custom", (req, res, next) => {
const customError = {
statusCode: 502,
message: "custom message",
errorKey: "custom_error", // optional parameter
description: "description", // optional parameter
help: "https://domain.example/integration/fixes/custom-api", // optional parameter
invalidParams: [
{
message: "invalid value",
location: "body", // optional parameter
param: "email"
}
//you can add more objects
] // optional parameter
}
return HttpError.customError(errorObject)
})ES6
import { ErrorsAttrs, HttpError } from "http-error-expressjs"
import express, { NextFunction, Request, Response } from "express"
let app = express()
// in the beginning of your app (important)
app.use(HttpError.initializer)
// your app routes or other middlewares
//sample APIs
app.get("/400", (req: Request, res: Response, next: NextFunction) => {
return HttpError.BadRequest("invalid request data")
})
app.get("/500", (req: Request, res: Response, next: NextFunction) => {
return HttpError.InternalServerError()
})
app.get("/custom", (req: Request, res: Response, next: NextFunction) => {
const custom: ErrorsAttrs = {
statusCode: 502,
message: "custom message",
errorKey: "custom_error", // optional parameter
description: "description", // optional parameter
help: "https://domain.example/integration/fixes/custom-api", // optional parameter
invalidParams: [
{
message: "invalid value",
location: "body", // optional parameter
param: "string"
}
//you can add more objects
] // optional parameter
}
return HttpError.customError(errorObject)
})ErrorObject
statusCode: the status code of the error.requiredmessage: the error message.requireddescription: the error description.optionalhelp: the error url that can help the client to fix the api issue e.g (https://your-domain.example/integration/fixes/auth-api)optionalinvalidParams: the errors of request in case you need to validate the request data.optionalmessage: the error message.requiredparam: the error parameter name e.g (email, password, name, etc).optionallocation: the location of parameter key.required
errorKey: the error key and the main purpose we can use it for localization part and in this case we will have a generic errors we can catch any error message by keyfor example:we can store local.en.json and local.en.json includes{ "bad_request": "invalid user request data" }and local.ar.json includes
{ "bad_request": "بايانات غير صحيحة" }and the both files located in the frontend so by using the response
errorKeywe can localize the error message easily.optional
HttpError
Initializer
it's a middleware should be used in the top of your app or at lest before your
routes that include HttpError
// in the beginning of your app (important)
app.use(HttpError.initializer)
// OR
app.use((req, res, next) => {
HttpError.initializer(req, res, next)
})customError
it's a helper function can help you to create your custom error.
HttpError.{{ any function from the next list }}
they are helper functions allow you to send sepecific error to the client
attrserror object to customize your error responseoptionalmessage: the error message.requirederrorKey: the error key.optionalhelp: the error help location/url.optionaldescription: the error descriptionoptionalinvalidParams: the request parameters errorsoptional
| status code | function name |
|---|---|
| 400 | BadRequest |
| 401 | Unauthorized |
| 402 | PaymentRequired |
| 403 | Forbidden |
| 404 | NotFound |
| 405 | MethodNotAllowed |
| 406 | NotAcceptable |
| 407 | ProxyAuthenticationRequired |
| 408 | RequestTimeout |
| 409 | Conflict |
| 410 | Gone |
| 411 | LengthRequired |
| 412 | PreconditionFailed |
| 413 | PayloadTooLarge |
| 414 | URITooLong |
| 415 | UnsupportedMediaType |
| 416 | RangeNotSatisfiable |
| 417 | ExpectationFailed |
| 418 | ImATeapot |
| 421 | MisdirectedRequest |
| 422 | UnprocessableEntity |
| 423 | Locked |
| 424 | FailedDependency |
| 425 | TooEarly |
| 426 | UpgradeRequired |
| 428 | PreconditionRequired |
| 429 | TooManyRequests |
| 431 | RequestHeaderFieldsTooLarge |
| 451 | UnavailableForLegalReasons |
| 500 | InternalServerError |
| 501 | NotImplemented |
| 502 | BadGateway |
| 503 | ServiceUnavailable |
| 504 | GatewayTimeout |
| 505 | HTTPVersionNotSupported |
| 506 | VariantAlsoNegotiates |
| 507 | InsufficientStorage |
| 508 | LoopDetected |
| 509 | BandwidthLimitExceeded |
| 510 | NotExtended |
| 511 | NetworkAuthenticationRequired |