Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/oxyno-zeta/express-joi-middleware
Express Joi Middleware
https://github.com/oxyno-zeta/express-joi-middleware
Last synced: about 2 months ago
JSON representation
Express Joi Middleware
- Host: GitHub
- URL: https://github.com/oxyno-zeta/express-joi-middleware
- Owner: oxyno-zeta
- License: mit
- Archived: true
- Created: 2016-11-19T18:29:40.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2019-01-06T07:28:54.000Z (over 5 years ago)
- Last Synced: 2024-07-17T15:43:40.630Z (2 months ago)
- Language: JavaScript
- Size: 18.6 KB
- Stars: 9
- Watchers: 3
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
Express Joi Middleware
======================[![Join the chat at https://gitter.im/express-joi-middleware/Lobby](https://badges.gitter.im/express-joi-middleware/Lobby.svg)](https://gitter.im/express-joi-middleware/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
[![Build Status](https://travis-ci.org/oxyno-zeta/express-joi-middleware.svg?branch=master)](https://travis-ci.org/oxyno-zeta/express-joi-middleware)
[![Build Status](https://circleci.com/gh/oxyno-zeta/express-joi-middleware.png)](https://circleci.com/gh/oxyno-zeta/express-joi-middleware)
[![npm](https://img.shields.io/npm/v/express-joi-middleware.svg)]()
[![Dependency Status](https://gemnasium.com/badges/github.com/oxyno-zeta/express-joi-middleware.svg)](https://gemnasium.com/github.com/oxyno-zeta/express-joi-middleware)
[![Coverage Status](https://coveralls.io/repos/github/oxyno-zeta/express-joi-middleware/badge.svg?branch=master)](https://coveralls.io/github/oxyno-zeta/express-joi-middleware?branch=master)## Description
Implementation of [Joi](https://github.com/hapijs/joi) middleware for ExpressJS.## Features
- 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## How to use
### Install
```bash
npm install --save express-joi-middleware
```
### Example Usage
```javascript
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);
```## API
### Schema
A javascript object with these possible keys :
- body
- query
- params
- headersIn these keys, you must provide an object with a 'Joi' validation.
### Options
A javascript object with these possible keys :
- joi
- joiOptions
- validationCallback
- wantResponse
- overrideBody#### joi
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.
#### joiOptions
This key is for all [Joi options in validate](https://github.com/hapijs/joi/blob/master/API.md#validatevalue-schema-options-callback).Default value : {}.
#### wantResponse
This option is here if you want that the library send the response with a 400 as status code and the [Joi Error](https://github.com/hapijs/joi/blob/master/API.md#errors) details part as body.
Otherwise, the library will 'next' the [Joi Error](https://github.com/hapijs/joi/blob/master/API.md#errors).
You can catch them like that :
```javascript
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).#### overrideBody
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).
#### validationCallback
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](https://github.com/hapijs/joi/blob/master/API.md#errors))
- value (The validated value with any type conversions and other modifiers applied (the input is left unchanged). See the callback "value" [here](https://github.com/hapijs/joi/blob/master/API.md#validatevalue-schema-options-callback))## Thanks
* My wife BH to support me doing this## Author
* Oxyno-zeta (Havrileck Alexandre)## License
MIT (See in License.md)