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 :)