Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Class to wrap an HTTP response in a JSend Specification format

License

Notifications You must be signed in to change notification settings

untemps/jsend-wrapper

Repository files navigation

@untemps/jsend-wrapper

Class to wrap an HTTP response in a JSend Specification format.

The status string (success, fail, error) is calculated along with the HTTP status code of the response:

  • If the status code is greater or equal to 500, status is set to error
  • If the status code is greater or equal to 400 and strictly lower to 500, status is set to fail
  • Otherwise, status is set to success

npm GitHub Workflow Status Codecov

Installation

yarn add @untemps/jsend-wrapper

Usage

Import JSendWrapper:

import { JSendWrapper } from '@untemps/jsend-wrapper'

Create an instance of JSendWrapper:

const jsend = new JSendWrapper()

Call the wrap method passing two mandatory and two optional arguments:

jsend.wrap([statusCode], [body], [errorCode], [errorData])

wrap Method Arguments

Parameter Type Description
statusCode number HTTP code of the response
body any Body of the response. Depending of the status (see below)
errorCode number (Optional) A numeric code corresponding to the error
errorData any (Optional) A generic container for any other information about the error

The body Argument

The type of the body argument depends on the status:

Status Type Description
success any Data returned by the HTTP request. If the call returns no data, data is set to null.
fail object Hash of key/value pairs explaining what went wrong in the HTTP request (validation, ...)
error string Meaningful, end-user-readable message, explaining the reason of the error

Formatted Result

Success

{
 status: 'success',
 data: {
 post: {
 id: 1,
 title: 'A blog post',
 body: 'Some useful content'
 }
 }
}

Fail

{
 status: 'fail', 
 data: {
 	title: 'A title is required'
 }
}

Error

{
 status: 'error', 
 message: 'Unable to communicate with database'
}

JSendError

A JSendError class is provided to help throwing specific JSend errors.

The constructor accepts either plain message, code, data arguments or a JSendResponse object:

import { JSendError } from '@untemps/jsend-wrapper'
throw new JSendError('HTTP Error', 500, { someValue: 42 })
throw new JSendError({ status: 'error', message: 'HTTP Error', code: 500, data: { someValue: 42 })

Types

Besides the class wrapper, the lib exports the definitions for the response type (TJSendResponse) and the status enum (EJSendStatus).

TJSendResponse

status: EJSendStatus
data?: any
message?: string,
code?: number

EJSendStatus

SUCCESS = 'success'
FAIL = 'fail'
ERROR = 'error'

For more information about the JSend Spec, see the GitHub README here : https://github.com/omniti-labs/jsend

About

Class to wrap an HTTP response in a JSend Specification format

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Contributors 2

AltStyle によって変換されたページ (->オリジナル) /