express-response-formatter
    TypeScript icon, indicating that this package has built-in type declarations

    2.0.2 • Public • Published

    express-response-formatter

    GitHub license npm code style: prettier PRs Welcome Build Status Coverage Status

    Better way to format Express response

    How It Works

    • You can use response with readable name like res.formatter.ok for 200 ok or res.formatter.badRequest for 400 bad request.
    • It will format your response in two ways success and error.
      • If response is 2xx, 3xx return response under object key data.
      • If response is 4xx, 5xx return response under object key error.
    • You can pass metadata as second parameter and it's will present under meta object key.

    Usage

    Installation

    npm install express-response-formatter --save
    

    Quick Start

    Response for 200 Ok.

    import app from 'express'
    import { responseEnhancer } from 'express-response-formatter'
     
    const app = express()
     
    // Add formatter functions to "res" object via "responseEnhancer()"
    app.use(responseEnhancer())
     
    app.get('/success', (req, res) => {
      const users = [{ name: 'Dana Kennedy' }, { name: 'Warren Young' }]
     
      // It's enhance "res" with "formatter" which contain formatter functions
      res.formatter.ok(users)
    })
     
    app.listen(3000, () => console.log('Start at http://localhost:3000'))

    Result

    HTTP/1.1 200 Ok
    {
      "data": [
        {
          "name": "Dana Kennedy"
        },
        {
          "name": "Warren Young"
        }
      ]
    }

    More usages

    Response for 200 Ok with meta field

    app.get('/success-with-meta', (req, res) => {
      const users = [{ name: 'Dana Kennedy' }, { name: 'Warren Young' }]
     
      const meta = {
        total: 2,
        limit: 10,
        offset: 0,
      }
     
      res.formatter.ok(users, meta)
    })
    HTTP/1.1 200 Ok
    {
      "meta": {
        "total": 2,
        "limit": 10,
        "offset": 0,
      },
      "data": [
        {
          "name": "Dana Kennedy"
        },
        {
          "name": "Warren Young"
        }
      ]
    }

    Response for 400 Bad Request with "error"

    app.get('/bad-request', (req, res) => {
      const errors = [
        { detail: 'Field id is required.' },
        { detail: 'Field foo is required.' },
      ]
     
      res.formatter.badRequest(errors)
    })
    HTTP/1.1 400 Bad Request
    {
      "error": [
        {
          "detail": "Field id is required."
        },
        {
          "detail": "Field foo is required."
        }
      ]
    }

    APIs

    METHOD STATUS CODE
    res.formatter.ok(data, meta?) 200
    res.formatter.created(data, meta?) 201
    res.formatter.accepted(data, meta?) 202
    res.formatter.noContent(data, meta?) 204
    res.formatter.badRequest(errors, meta) 400
    res.formatter.unauthorized(errors, meta) 401
    res.formatter.forbidden(errors, meta) 403
    res.formatter.notFound(errors, meta) 404
    res.formatter.methodNotAllowed(errors, meta) 405
    res.formatter.timeout(errors, meta) 408
    res.formatter.conflict(errors, meta) 409
    res.formatter.unprocess(errors, meta) 422
    res.formatter.tooManyRequests(errors, meta) 429
    res.formatter.serverError(errors, meta) 500
    res.formatter.badGateway(errors, meta) 502
    res.formatter.serviceUnavailable(errors, meta) 503
    res.formatter.gatewayTimeout(errors, meta) 504

    Keywords

    none

    Install

    npm i express-response-formatter

    DownloadsWeekly Downloads

    328

    Version

    2.0.2

    License

    MIT

    Unpacked Size

    1.04 MB

    Total Files

    9

    Last publish

    Collaborators

    • aofleejay