This module is under construction
A library to validate API requests attributes
$ npm install api-request-validator
$ npm run test
| Rule | Description | Valid condition |
|---|---|---|
| required | value is required | value !== undefined |
| enum | value must be quel to | enum.indexOf(value !== -1) |
| type | type of value | typeof(value) === type |
| regexp | regexp must be match value | regexp.exec(value) |
| asyncMethods | custom async functions | () => true |
TO DO: Explain the difference between error and warning
const validationRules = {
['PAYLOAD_KEY']: {
['VALIDATION_RULE']: {
data: ...,
error: { }
},
['VALIDATION_RULE']: {
data: ...,
warning: { }
}
}
}
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)
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)
...
})
- write correct documentation
- improve :)