Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

@sertis/request-validator

sertis-dev7MIT1.0.11

Express middleware for http request validation.

readme

request-validator

Express middleware for http request validation.

Contents

Installation

npm i @sertis/request-validator

Example

NOTE: Must use validator before your router middleware.

const app = require('express')()
const Validator = require('request-validator')

const apiConfig = require('/path/to/apiConfig')
const validator = new Validator(apiConfig) //apiConfig is optional.

app.post('/', validator.validate(), (req, res) => {
  res.send('Hello!')
})

app.listen(8081, () => {
  console.log('Start listen on port 8081')
})



Api configuration

configuration type description default
require object configuration for parameters must exists in the request body {}
optional object configuration for parameters can exists in the request body {}
allowNull boolean configuration for optional parameters to allow to keep null parameters in the request body false
module.exports = {
  'METHOD /endpoint': {
    allowNull: true,
    require: {
      parameter: 'type',
    },
    optional: {
      parameter: 'type',
    },
  },
}

Configuration for object and array (1.0.8 or Higher)

module.exports = {
  'METHOD /endpoint': {
    require: {
      objectA: 'object', //OR
      objectB: {
        parameter: 'type',
      },
      arrayA: 'array', //OR
      arrayB: ['type'],
    },
    optional: {
      objectA: 'object', //OR
      objectB: {
        parameter: 'type',
      },
      arrayA: 'array', //OR
      arrayB: ['type'],
    },
  },
}

Available variable type

NOTE: Extend from Javascript variable type.

  • string
  • number
  • boolean
  • object
  • array (1.0.1 or Higher)

Configuration example

module.exports = {
  'POST /deletenotebook': {
    require: {
      notebookName: 'string',
    },
  },
  'POST /importNotebook': {
    allowNull: true,
    optional: {
      notebookName: 'string',
      cells: [{
        title: 'string',
        code: 'string',
      }],
    },
  },
  'POST /createNotebook': {
    require: {
      notebookName: 'string',
    },
    optional: {
      noteBookDetail: 'string',
    },
  },
}



Error response format

  • Require parameters validation failed error

      {
        "error": {
          "code": 400,
          "status": "BAD_REQUEST",
          "message": "Require parameters validation failed",
          "details": [
            "Expected \"notebookName\" to be a \"string\", but got a \"undefined\""
          ]
        }
      }
  • Optional parameters validation failed error

      {
        "error": {
          "code": 400,
          "status": "BAD_REQUEST",
          "message": "Optional parameters validation failed",
          "details": [
            "Expected \"notebookName\" to be a \"string\", but got a \"number\""
          ]
        }
      }