作用
统一输入方式检测输入是否有问题并给出一定的信息
API
构造函数(Object params)
用params初始化这个checkerparams的引用被保存在checker内部,如果随后params被改变,则checker返回的结果也会改变
raw()
返回原始数据(即params)get(String name, Any opt)
获取params[name]对应的数据,如果不存在则返回opthas(String name)
判断params里是否存在name字段null
、undefined
、空字符串
被认为是存在params 没有这个key被认为是不存在
require[Type]
(name)
返回必须存在的字段name如果不存在,或者类型不满足要求,都抛出
InputCheckFailError
异常,这是一个 ApiError
的实例例如
params = { a:"abc" }
checker.requireString("a") // 返回字符串"abc"
而
checker.requireInt("a") // 抛出异常
requireNullable[Type]
(name)
和 require[Type]
基本相同不同的是,这个字段可以是空值(
null
、undefined
)这样可以强制传入一个参数,但该参数可以为空
例如:
requireObjectId
必须传入一个合法的 objectId如果这个参数可以为空,那么有两种选择:
requireNullableObjectId
和 optionalObjectId
在api设计中,
optional
常常引起误会,最好的方法是传入一个特殊值“null
”此时这个参数可以接受一个合法的 objectId 或 null,而非法的 objectId 就不能通过
require[Type]
Array(name)
返回必须存在的字段name数组输入既可以是一个单个的数据,也可以是一个数组,但返回保证总是一个数组。
如果不存在,或者任意一项类型不满足要求,则抛出
InputCheckFailError
例如:
params = { a1:"test", a2:["test1","test2"] }
checker.requireStringArray("a1") // return ["test"]
checker.requireStringArray("a2") // return ["test1","test2"]
optional[Type]
(name, defaultValue)
optionalNullable[Type]
(name, defaultValue)
optional[Type]
Array(name, defaultValue)
defaultValue是“默认值”,如果指定的值不存在,则取该值。其他行为与require一样。有值但类型不满足仍然抛异常。注意空值也算有值。如
params = { a:null }
checker.optionalInt("a", 0) // 抛异常
“默认值”参数没有类型要求