Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/swapnilsoni1999/express-dry
Express.js Body, Query and Params validator based on https://github.com/uditkarode/drytype
https://github.com/swapnilsoni1999/express-dry
express-middleware express-validator expressjs hacktoberfest hacktoberfest021
Last synced: about 2 months ago
JSON representation
Express.js Body, Query and Params validator based on https://github.com/uditkarode/drytype
- Host: GitHub
- URL: https://github.com/swapnilsoni1999/express-dry
- Owner: SwapnilSoni1999
- Created: 2021-09-20T12:07:02.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2021-10-28T18:17:03.000Z (about 3 years ago)
- Last Synced: 2024-10-07T12:12:09.134Z (3 months ago)
- Topics: express-middleware, express-validator, expressjs, hacktoberfest, hacktoberfest021
- Language: JavaScript
- Homepage:
- Size: 162 KB
- Stars: 12
- Watchers: 2
- Forks: 14
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Express-Dry
A simple lightweight [Express.js](https://expressjs.com) Validation Library (With predefined validators [WIP])## How to install
- install from [npmjs](https://www.npmjs.com/package/express-dry)
```
npm install express-dry
```
or
```
yarn add express-dry
```- Include in your project
Eg. **routes/auth.js**
```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` and `query`
```js
dry.params({ id: { type: Number } }, { allowExtraKeys: false })
dry.query({ search: { type: String, required: false } }, { allowExtraKeys: true, statusCode: 200 })
```## Complete Example
```js
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) => {})
```## Features
- All Javascript supported primitives
- optional payload validation with `required: false`
- Will be adding more custom validations such as Email, MongoObjectId and many more :)## Credits
@uditkarode for [drytypes](https://www.npmjs.com/package/drytypes)### License
MIT ©Swapnil Soni