express-request-checker v0.2.3
express-request-checker
Create request checker middleware for Express.
with express-request-checker, checking HTTP request's query, body or url params will be more easy and readable. All the works is just require express-request-checker in router.js which belongs to an Express project and config it. So it's no need to modify any other source file.
Since validation codes are written in a config-like way, router.js file will look like an API document, I hope that the communication cost within the development team can be reduced.
- No validation codes.
router.jsis also an API document.- Easy to combine with other validation package.
Quick Example(Javascript):
// router.js
var express = require('express');
var reqCheckerModule = require('express-request-checker');
var reqChecker = reqCheckerModule.requestChecker;
var router = express.Router();
var options = {
strict: false, // Allow unexpected parameter. (true|false, DEFAULT: true)
query: { // Check req.query. (params|query|body)
'param1': {
matchRegExp: /^[0-9]{1}$/
},
'param2': {
isIn: [1, 2, 3],
isOptional: true // Optional parameter. (true|false, DEFAULT: false)
}
}
};
router.get('/path', reqChecker(options), handlerFunction);
module.exports = router;Quick Example(CoffeeScript):
# router.coffee
express = require 'express'
reqCheckerModule = require 'express-request-checker'
reqChecker = reqCheckerModule.requestChecker
router = express.Router()
options =
strict: false # Allow unexpected parameter. (true|false, DEFAULT: true)
query: # Check req.query. (params|query|body)
'param1':
matchRegExp: /^[0-9]{1}$/
'param2':
isIn: [1, 2, 3]
isOptional: true # Optional parameter. (true|false, DEFAULT: false)
router.get '/path', reqChecker(options), handlerFunction
module.exports = routerPlay with other modules
// router.js
var express = require('express');
var reqCheckerModule = require('express-request-checker');
var reqChecker = reqCheckerModule.requestChecker;
var router = express.Router();
var validator = require('validator');
var options = {
params: {
'id': {
assertTrue: validator.isInt
}
},
body: {
'email': {
assertTrue: validator.isEmail
},
'jsonData': {
assertTrue: validator.isJSON
}
}
};
router.post('/user/:id', reqChecker(options), handlerFunction);
module.exports = router;Checker Options Default Values
| Option | Default Value |
|---|---|
| strict | true |
Parameter Options Default Values
| Option | Default Value |
|---|---|
| isOptional | false |
| assertTrue | [] |
| assertFalse | [] |
| matchRegExp | [] |
| isIn | [] |
| notIn | [] |
| isInteger | null |
| isEmail | null |
| isArray | null |
| isIntegerArray | null |
| equal | null |
| greaterThan | null |
| greaterEqual | null |
| lessThan | null |
| lessEqual | null |
| allowEmpty | false |
| minLength | null |
| maxLangth | null |
Parameter Options
assertTrue
function, [function, function ...] or []. (DEFAULT: [] - No checker)
Using parameter in request as function(s)'s argument, if the function(s) return true,OK. Otherwise, NG.
Example:
option = {
query: {
param1: {
assertTrue: [function(value) { return value > 10; }]
}
}
}assertFalse
Opposite to assertTrue.
matchRegExp
RegExp, [RegExp, RegExp ...] or []. (DEFAULT: [] - Don't check)
If the RegExp(s) test result is true, OK. Otherwise, NG.
Example:
option = {
query: {
param1: {
matchRegExp: [/^[012]{1}$/, /^[234]{1}$/]
}
}
}isIn
[value, value, ...] or []. (DEFAULT: [] - Don't check)
Values of parameter in request which are allowed.
Example:
option = {
query: {
param1: {
isIn: [1, 2, 3]
}
}
}notIn
Opposite to isIn.
isInteger
true or false. (DEFALT:null - Don't care)
when true, The value of parameter in request must be an integer.
when false, The value of parameter in request must NOT be an integer.
Example:
option = {
query: {
param1: {
isInteger: true
}
}
}isEmail
true or false. (DEFALT:null - Don't care)
when true, The value of parameter in request must be an correct email address.
when false, The value of parameter in request must NOT be an email address.
Example:
option = {
query: {
param1: {
isEmail: true
}
}
}isArray
true or false. (DEFALT:null - Don't care)
when true, The value of parameter in request must be an Array or stringified Array.
when false, The value of parameter in request must NOT be an Array or stringified Array.
Example:
option = {
query: {
param1: {
isArray: true
}
}
}isIntegerArray
true or false. (DEFALT:null - Don't care)
when true, The value of parameter in request must be an Array or stringified Array whose elements are all integers.
when false, The value of parameter in request must NOT be an Array or stringified Array whose elements are all integers.
Example:
option = {
query: {
param1: {
isIntegerArray: true
}
}
}equal / greaterThan / greaterEqual / lessThan / lessEqual
integer or null. (DEFALT:null - Don't care)
The value of parameter in request must be equal/greaterThan/greaterEqual/lessThan/lessEqual to the option value.
Example:
option = {
query: {
param1: {
equal: 100
}
}
}allowEmpty
true or false. (DEFAULT: false)
when setted true, The value of parameter in request can be ''.
when setted true, The value of parameter in request can NOT be ''.
Example:
option = {
query: {
param1: {
isEmpty: false
}
}
}maxLength / minLength
integer or null. (DEFALT:null - Don't care)
Max/Min Length of the value of parameter in request.
Example:
option = {
query: {
param1: {
minLength: 5,
maxLength: 10
}
}
}Install:
npm install express-request-checkerTest:
cd node_modules/express-request-checker
npm test