request-contract

1.0.4 • Public • Published

request-contract

simple http request params pre-validation and convertation middleware factory for express powered by Joi

instaliation

npm i --save request-contract

Usage

import RequestContract from ('request-contract')

const login = new RequestContract({
  body: RequestContract.schema().object().keys({
    email: RequestContract.schema().string().required(),
    password: RequestContract.schema().string().required()
  })
})

Supports #query, #body and #params request fields to configure

// then in controller
router.post('/login',
    login,
    async (req, res, next) => {
      // your code
    }

If request contains invalid field then calls #next() with BadRequest #Error which contain 400 status field and validation errors messages like this

{
  "message": {
    "errors": {
      "params": null,
      "body": null,
      "query": "child \"page\" fails because [\"page\" must be a number]"
    },
    "message": "request contract requirements error"
  }
}

Readme

Keywords

Package Sidebar

Install

npm i request-contract

Weekly Downloads

1

Version

1.0.4

License

MIT

Last publish

Collaborators

  • lod-ilya-zubkov