Express bodyParser无法正常工作

时间:2017-02-12 17:05:54

标签: json express body-parser

我对bodyparser有一个问题,我无法弄明白。

几周前,我使用Express创建了一个REST API,并使用bodyParser从客户端读取JSON数据。一切都运作良好,但今天早上我尝试启动我的应用程序,我的所有req.body.data都是未定义的,实际上正文等于{}。

这是我的配置:

app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());

然后我配置我的路线。我已经看到你必须按照这个顺序声明,即你的路线之前的bodyParser,这就是我的工作。我认为这是一个版本问题,但经过一些升级后问题仍然存在。

我使用HttpRequester来模拟客户端。一切都运转正常,直到今天早上。

发送的数据示例:

{
  "username": "david",
  "password": "bowie",
  "email": "db@sfr.fr"
}

然后有这个代码用于响应:

app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.use(logger('dev'));
app.use(expressValidator());
app.use(cookieParser());

app.use('/users', users);

然后在用户中我只创建一个用户:

 // Creation of a user.
 router.post('/create', function(req, res) {

   // We check current mistakes like username or password empty.
   if (!userhelper.checkCreateUserRequest(req, res)) {
    return;
   }

   // Save the user in BDD
 }

在checkCreateUserRequest中我这样做:

if (req.body.username == null || req.body.password == null ||     req.body.email == null) {
res.status(400).json({message: "malformed request", code: 1});
return false;

}

我做其他事情,例如检查用户名是否为空,但我不认为粘贴它很重要。

感谢您的回复,并抱歉我的英语不好......

1 个答案:

答案 0 :(得分:3)

如果您使用JSON请求,则可以设置正确的HTTP标头。

Content-Type:application / json