@jsonsonson/swagger-express-validator
v0.0.7
Published
swagger-express-validator, but with more supported Swagger formats passed to AJV
Maintainers
Readme
Swagger Express Validator
Forked off of https://github.com/gargol/swagger-express-validator
swagger-express-validator is a lightweight middleware for request/response validation based on
OpenAPI v2.0 (aka swagger) specification.
The main difference of this package to alternatives like swagger-tools is that this package is very configurable and only concentrates on validation against provided schema. You can choose the behavior of invalid validation like returning a 500 or just logging an error to your logger.
Requirements
- express ^4.0.0
- body-parser ^1.0.0
Features
- Configurable validation behavior
- Fastest available JSON schema validation based on ajv library
- Optional validations for either request parameters or response values
- Independent from express application structure. This is a simple drop-in middleware without additional alterations to your swagger definitions or application routing.
- Support for nullable field validation though
x-nullableattribute
Installation
Start using this library with npm install swagger-express-validator --save
Sample use
To set up simple validation for your requests and responses:
const util = require('util');
const express = require('express');
const bodyParser = require('body-parser');
const validator = require('swagger-express-validator');
const schema = require('./api-schema.json');
const server = express();
server.use(bodyParser.json());
const opts = {
schema,
validateRequest: true,
validateResponse: true,
nonExistentProperties: true,
disallowEmptyStrings: true,
requestValidationFn: (req, data, errors) => {
console.log(`failed request validation: ${req.method} ${req.originalUrl}\n ${util.inspect(errors)}`)
},
responseValidationFn: (req, data, errors) => {
console.log(`failed response validation: ${req.method} ${req.originalUrl}\n ${util.inspect(errors)}`)
},
};
server.use(validator(opts));
server.use('/status', (req, res) => {
res.json({
status: 'OK',
})
});
server.use((err, req, res, next) => {
res.status(500);
res.json(err);
});
return server.listen(3000);
Options
validateRequest- Validate the request. Defaults to
true
- Validate the request. Defaults to
validateResponse- Validate the response. Defaults to
true
- Validate the response. Defaults to
allowNullable- Allow nullable values. Deafults to 'true'
nonExistentProperties- Do not allow properties not defined in the schema. Defaults to
true
- Do not allow properties not defined in the schema. Defaults to
disallowEmptyStrings- Do not allow strings to be empty. Defaults to
true
- Do not allow strings to be empty. Defaults to
Formats
Below is a list of formats that can be validated against request body parameters
int32- Is an integerint64- Is an integerurl- Is a URLbyte- Is base64float- Is a floatdouble- Is a floatemail- Is an emaildate- Is a datedate-time- Is a dateuuid- Is a UUIDipv4- Is an IP addressipv6- Is an IP addressnumeric- Is numericalphanumeric- Is alphanumericlowercase- Is lowercaseuppercase- Is uppercasemacAddress- Is a MAC addresshex- Is hexadecimalmd5- Is MD5json- Is JSONcurrency- Is a currency formatbase64- Is base64
Debugging
To see debug output use DEBUG=swagger-express-validator as an environmental varialbe when starting
your project, eg.: DEBUG=swagger-express-validator node server.js. To gain more insights
on how this works see documentation of debug library
Contributors
Licence
Special thanks to @bgaluszka for initial inspiration :)
