Implementation of Joi middleware for ExpressJS.
- Joi validator middleware for ExpressJS
- Fully customizable (Your can give your validation callback, Joi options, allow the middleware to respond Bad Request, ...)
- Possible to give your 'Joi' module
npm install --save express-joi-middleware
const express = require('express');
const bodyParser = require('body-parser');
const expressJoiMiddleware = require('express-joi-middleware');
const app = express();
app.use(bodyParser.json());
const bodySchema = {
body: {
id: Joi.string().min(5).required(),
},
};
const options = {
wantResponse: true,
};
app.post('/body', expressJoiMiddleware(bodySchema, options), (req, res) => res.json(req.validated));
app.listen(8080);
A javascript object with these possible keys :
- body
- query
- params
- headers
In these keys, you must provide an object with a 'Joi' validation.
A javascript object with these possible keys :
- joi
- joiOptions
- validationCallback
- wantResponse
- overrideBody
This key is a possibility to pass a Joi instance if you want to pass an old (or new) Joi module version.
Default value : Library version.
This key is for all Joi options in validate.
Default value : {}.
This option is here if you want that the library send the response with a 400 as status code and the Joi Error details part as body. Otherwise, the library will 'next' the Joi Error. You can catch them like that :
app.use((err, req, res, next) => {
if (err.isJoi) {
res.status(400).json(err.details);
return;
}
res.status(500).send('Internal Server Error');
});
Default value : false (the library will 'next' error).
This option is here to override 'body' in request instead of creating a new key : 'validated'.
Default value : false (the library will create a 'validated' key in request).
This option is here to provide a way to change the 'validation' callback.
This option must be a function (a) that return another function (b).
The first function (a) will have these parameters :
- req (request)
- res (response)
- next (next function)
- options (options of the middleware)
The second function (b) will have these parameters :
- err (Joi Error)
- value (The validated value with any type conversions and other modifiers applied (the input is left unchanged). See the callback "value" here)
- My wife BH to support me doing this
- Oxyno-zeta (Havrileck Alexandre)
MIT (See in License.md)