如何检查express / node js中get方法中是否有支持的参数?
我在我的node.js后端有一个方法:
app.get('/reports', function(req, res){ var amount = req.param('amount'); var longitude = req.param('long'); var latitude = req.param('lat'); var distance = req.param('distance'); var numberOf = req.param('numberOf');
我使用一个validator.js( https://github.com/chriso/validator.js )插件来validation它的input。
所以例如它看起来像这样的数量:
var amount = req.param('amount'); if (amount && !validator.isNumeric(amount)) { return res.status(406).send("Please send a valid amount"); }
当用户键入: /reports?amount=aaa
他会得到错误。 当他键入/reports?amount=2
他会得到过滤结果。
但是,例如,当用户input一些随机参数,例如/reports$randomString=21
我想给他返回一个消息,对不起,但是randomString
不是一个有效的参数。 我怎么能做到这一点,而不知道用户可以键入什么样的不同string?
Express将设置包含请求提供的所有查询参数的req.query对象。
你可以遍历这个对象来validation所有的参数是否有效。
例如:
req.query.keys(o).forEach(function(key) { // your validations here if (key != 'amount' && key != 'long' && .... ) { // wrong param, throw error } });