Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mze-runner/amn-express-validate
DO NOT TRUST CLIENT! An express middleware build around 'hapi/joi' validation package to simplify client's input validation.
https://github.com/mze-runner/amn-express-validate
Last synced: about 2 months ago
JSON representation
DO NOT TRUST CLIENT! An express middleware build around 'hapi/joi' validation package to simplify client's input validation.
- Host: GitHub
- URL: https://github.com/mze-runner/amn-express-validate
- Owner: mze-runner
- Created: 2020-06-14T13:15:31.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2020-10-23T14:16:18.000Z (about 4 years ago)
- Last Synced: 2024-10-01T22:53:34.042Z (3 months ago)
- Language: TypeScript
- Size: 9.77 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# AMN Express Validate
DO NOT TRUST A CLIENT!
`Amn Express Validate` provides a simple and flexible way of validation client's input.
It is a simple wrapper around [`joi`](https://joi.dev/) validator and convert it into **connect middleware**. It helps easily build validation step into [express](https://expressjs.com/) middleware chain.
In order to deliver meaningful error message back to client, Amn Express Validate leverage another `amn` package [Amn Error](https://www.npmjs.com/package/amn-error).
> AMN leverage schema validation for client's input through [joi](https://joi.dev/), hence, it's your responsibility to install the package before use `validate`. Please, follow peer dependency message at installation.
## Get started
### Installation
```javascript
npm i amn-express-validate
```### Examples
The middleware `validate` is HOC. That allows to add extra control over the way the middleware work. It consumes two parameters,
- schema - an ObjectSchema which defines validation rules.
- source - an optional parameter 'body' or 'query' or 'params' to define which client input to validate. In case none provided, the middleware picks all input from 'body' and 'query' and 'params'.```javascript
const Joi = require('joi');
const validate = require('amn-express-validate');// validate req.body
const userSignUp = Joi.object().keys({
email: Joi.string().email().required(),
password: Joi.string().min(4).max(20).required(),
});router.post('/user/signup',
, validate(userSignUp, 'body')
, singUpMiddleware
);// validate req.params in url string
const postId = Joi.object().keys({
pid: Joi.string().pattern(/^[0-9a-fA-F]{24}$/).required()
});const postBody = Joi.object().keys({
title: Joi.string().required(),
text: Joi.string().optional()
});router.put('/post/:pid/',
, validate(postId, 'params')
, postUpdateMiddleware
);// you can call validate multiply times
router.put('/post/:pid/',
, validate(postId, 'params') // validate params
, validate(postBody, 'body') // validate body
, postUpdateMiddleware
);```
### Error
Amn Express Validate leverage another `amn` package [Amn Error](https://www.npmjs.com/package/amn-error) to report an error back to client.
Errors have the following response
- http status `400`;
- code `BAD_REQUEST`;
- message is a error description generated by [`joi`](https://joi.dev/).