express-request-checker
v0.2.3
Published
Express request checker extension.
Downloads
4
Maintainers
Readme
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.js
is 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 = router
Play 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-checker
Test:
cd node_modules/express-request-checker
npm test