1.1.4 • Published 5 years ago

api-request-validator v1.1.4

Weekly downloads
16
License
MIT
Repository
github
Last release
5 years ago

api-request-validator

This module is under construction

A library to validate API requests attributes

Install

npm downloads

$ npm install api-request-validator

Test

$ npm run test

Usage

Rules

RuleDescriptionValid condition
requiredvalue is requiredvalue !== undefined
enumvalue must be quel toenum.indexOf(value !== -1)
typetype of valuetypeof(value) === type
regexpregexp must be match valueregexp.exec(value)
asyncMethodscustom async functions() => true

TO DO: Explain the difference between error and warning

const validationRules = {
  ['PAYLOAD_KEY']: {
    ['VALIDATION_RULE']: { 
      data: ...,
      error: { }
    },
    ['VALIDATION_RULE']: { 
      data: ...,
      warning: { }
    }
  }
}

Simple example: user registration payload validation

See the example here!

Scenarios of example

Constructor

api-request-validator export a class constructor. The best way to build the validator is to extend the Validator class and set RULES as first argument of super() in constructor(). This approach allows to pass methods to the validator, like this:

import Validator from 'api-request-validator'
  
class UserRegistrationValidator extends Validator {
  constructor(payload) {
    super(RULES, payload, {})
  }
  
  async beforeValidate() {
  
  }
  
  async afterValidate() {
  
  }
  
  async findExisting(email) {
    const existing = await User.findOne({ email ))
    return !existing
  }
  
  async isBlacklisted(email) {
    ...
  }
}

Or for simple case

const validator = new Validator(RULES, payload)

Example with express

app.post('/login, async (req, res, next) => {
  const validator = new LoginValidator(req.body)
  await validator.run()
  if (!validator.valid)
    return next(validator.error)
  if (validator.warnings)
    res.header('api-warnings', validator.warnings)
  
  ...
})

To do

  • write correct documentation
  • improve :)
1.1.4

5 years ago

1.1.3

6 years ago

1.1.2

6 years ago

1.1.1

6 years ago

1.1.0

6 years ago

1.0.19

6 years ago

1.0.18

6 years ago

1.0.16

6 years ago

1.0.15

6 years ago

1.0.12

6 years ago

1.0.11

6 years ago

1.0.10

6 years ago

1.0.9

6 years ago

1.0.8

6 years ago

1.0.7

6 years ago

1.0.6

6 years ago

1.0.5

6 years ago

1.0.4

6 years ago

1.0.3

6 years ago

1.0.2

6 years ago

1.0.1

6 years ago

1.0.0

6 years ago

0.1.13

6 years ago

0.1.12

6 years ago

0.1.11

6 years ago

0.1.10

6 years ago

0.1.9

6 years ago

0.1.8

6 years ago

0.1.7

6 years ago

0.1.6

6 years ago

0.1.5

6 years ago

0.1.4

6 years ago

0.1.3

6 years ago

0.1.2

6 years ago

0.1.1

6 years ago

0.1.0

6 years ago

0.0.1

6 years ago