@epicx/express-dry
v1.0.9
Published
A simple express.js lightweight body, params and query validator.
Downloads
1
Maintainers
Readme
Express-Dry
A simple lightweight Express.js Validation Library (With predefined validators [WIP])
How to install
- install from npmjs
npm install express-dry
or
yarn add express-dry
- Include in your project Eg. routes/auth.js
const { Router } = require('express')
const dry = require('express-dry')
const router = Router()
router.post('/login', dry.body({
username: { type: String },
password: { type: String },
foo: { type: Boolean, required: false }
}), async (req, res) => {})
module.exports = router
After this the .body
will return a middleware with packed automatic validation inside and it will directly return error response to client with a {message: ''}
in it
- Same with
params
andquery
dry.params({ id: { type: Number } }, { allowExtraKeys: false })
dry.query({ search: { type: String, required: false } }, { allowExtraKeys: true, statusCode: 200 })
Complete Example
router.post('/login', dry.body({
name: { type: String },
age: { type: Number, min: 18, max: 35 },
password: { type: String, minLength: 8, maxLength: 20 },
consent: { type: Boolean, required: false }
}, { allowExtraKeys: false }), async (req, res) => {})
Nest Object Example
Nested objects only supports on dry.body({})
router.post('/test', dry.body({
name: { type: String },
infos: {
manager: { type: String },
classes: [
{
students: [
{
name: { type: String },
roll: { type: Number },
},
],
},
],
},
}, { allowExtraKeys: false }), async (req, res) => {})
Features
- All Javascript supported primitives
- optional payload validation with
required: false
- Will be adding more custom validations such as Email, MongoObjectId and many more :)
- Nested objects or arrays are also supported
Credits
@uditkarode for drytypes
License
MIT ©Swapnil Soni