api-request-validator
v1.1.4
Published
Validate API call parameters
Maintainers
Readme
api-request-validator
This module is under construction
A library to validate API requests attributes
Install
$ npm install api-request-validatorTest
$ npm run testUsage
Rules
| 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: { }
}
}
}Simple example: user registration payload validation
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 :)
