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

1.0.2 • Public • Published

Api Middleware

CircleCI

A utility to send formatted json responses as an express response

Usage

const express = require('express')
const Api = require('api-formatter').Api
 
let app = express()
 
// Register the middleware
app.use(Api.middleware({ name: 'My Fancy Api' }))
 
// Sending formatted data
app.get('/', (req, res) => {
  res.api.sendData({ something: 'cool!' })
})
 
// Sending a formatted failure
app.get('/wip', (req, res) => {
  res.api.sendFail('Not implemented yet', 418)
})
 
// Automatically catching errors
app.get('/bad', (req, res) => {
  req.api.catch(api => {
    throw new Error('Something went wrong :S')
  })
})

Success Response, HTTP 200

{
  "meta": {
    "success": true,
    "messages": [],
    "name": "My Fancy Api",
    "version": "0.1.2"
  },
  "data": {
    "something": "cool!"
  }
}

Failure Response, HTTP 400

{
  "meta": {
    "success": false,
    "messages": ["Something went wrong :S"],
    "name": "My Fancy Api",
    "version": "0.1.2"
  },
  "data": null
}

Middleware options

Name Use
name The name of your api, defaults to your package.json name
version The version of your api, defaults to your package.json version
httpError Whether a failed response should return a HTTP/400, defaults to true

A Full example

import express from 'express'
import { Api } from 'api-formatter'
 
let app = express()
 
app.use(Api.middleware({ name: 'dogs-api', version: 'v1' }))
 
app.get('/', (req, res) => {
  res.api.sendData({ msg: 'Hey!' })
})
 
app.get('/error', (req, res) => {
  res.api.sendFail(['Oops, something went wrong :S'])
})
 
app.listen(3000, () => console.log('Listening on :3000'))

The success response will be:

GET http://localhost:3000 → http/200

{
  "meta": {
    "success": true,
    "messages": [],
    "status": 200,
    "name": "dogs-api",
    "version": "v1"
  },
  "data": { "msg": "Hey!" }
}

And the fail response will be:

GET http://localhost:3000/error → http/400

{
  "meta": {
    "success": false,
    "messages": ["Oops, something went wrong :S"],
    "status": 400,
    "name": "dogs-api",
    "version": "v1"
  },
  "data": null
}

Dependencies (0)

    Dev Dependencies (10)

    Package Sidebar

    Install

    npm i api-formatter

    Weekly Downloads

    0

    Version

    1.0.2

    License

    MIT

    Unpacked Size

    29 kB

    Total Files

    15

    Last publish

    Collaborators

    • robb_j