Cleanbody is a lightweight, no-dependency JSON body validator. It is useful for sanitizing request payloads.
npm i -s cleanbody
- Require package in your JS project.
- Initialize a Cleanbody instance with a schema. (Examples in test.json and below.)
- Call a created function on the instance. It will return true if valid, false if not.
const Cleanbody = require('cleanbody');
/**
* In your project pass in a valid JS object for a schema to compare against incoming payloads.
* In my tests I import a JSON file. You can use `test.json` as an example for that.
* You can use a valid JS object if you don't want to import JSON.
*/
const schema = {
addUser: { // <-- root keys on the schema are what functions you will call later. ex. validate.addUser()
email: { // <-- each key here is a key on the JSON object you are validating
type: 'string', // <-- you can include an string array or a string of what type(s) you allow for this value
required: true, // <-- the key can be required or not required. but if it is defined it must meet all criteria
pattern: '', // <-- if the value type is a string and you include a pattern in the schema it will validate it
},
user: {
type: 'string',
required: true,
}
},
};
const validate = new Cleanbody(schema); // We initialize the instance with a schema
// Express app example route with body-parser
app.post('/user', (req, res, next) => {
/**
* example success body:
* {
* user: 'Scott Lassen',
* email: 'slassnpm@gmail.com',
* }
*
* example failed body:
* {
* user: true,
* email: 'slassnpmgmailcom',
* }
*/
const valid = validate.addUser(req.body); // returns true if payload is validated
if (valid) {
res.status(200).send(); // success!
} else {
res.status(400).send(); // failed!
}
});