首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Express-Validator验证POST参数

使用Express-Validator验证POST参数
EN

Stack Overflow用户
提问于 2014-06-15 00:56:17
回答 1查看 9.2K关注 0票数 5

我正在尝试使用express-validator将参数验证构建到我的Node/Express API中。但是,当我使用下面的curl命令curl -X POST -d "foo=bar" http://localhost:3000/collections/test发出一个缺少字段(在本例中是name)的POST请求时,该请求仍然成功通过,跳过了验证。下面是我当前的代码--有什么想法可以解释为什么验证被绕过了吗?

代码语言:javascript
复制
var util = require('util');
var express = require('express');
var mongoskin = require('mongoskin');
var bodyParser = require('body-parser');
var expressValidator = require('express-validator');

var app = express();
app.use(bodyParser());
app.use(expressValidator());

var db = mongoskin.db('mongodb://@localhost:27017/test', {safe:true})

app.param('collectionName', function(req, res, next, collectionName){
  req.collection = db.collection(collectionName)
  return next()
});

app.post('/collections/:collectionName', function(req, res, next) {
  req.checkBody('name', 'name is required').notEmpty();

  req.collection.insert(req.body, {}, function(e, results){
    if (e) return next(e)
    res.send(results)
  });
});

app.listen(3000);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-15 01:33:24

在处理请求之前,您需要添加对任何验证错误的检查。因此,对于您的post应用程序接口,您需要将其更新为如下所示:

代码语言:javascript
复制
app.post('/collections/:collectionName', function(req, res, next) {
  req.checkBody('name', 'name is required').notEmpty();

  // check for errors!
  var errors = req.validationErrors();
  if (errors) {
    res.send('There have been validation errors: ' + util.inspect(errors), 400);
    return;
  }

  req.collection.insert(req.body, {}, function(e, results){
    if (e) return next(e)
    res.send(results)
  });
});

更多信息请参见用法示例:https://github.com/ctavan/express-validator#usage

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24222207

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档