如何使用Express或Body-Parser拒绝无效的JSON主体

时间:2016-10-19 23:07:36

标签: json node.js express

我正在创建一个只接受json体型并使用body-parser表达的应用程序。不断出现的问题是,如果我发送一个无效的json主体,那么我的程序会将一个愚蠢的错误抛回给用户,并在控制台中。如何防止此控制台错误并拒绝使用不正确的JSON正文的请求。

提前致谢, 艾利。

PS。这是一些示例代码,用于显示我正在做的事情:

var bodyParser = require('body-parser');
var express = require('express');
var app = express();

app.use(bodyParser.json());

app.post('/test', function(req, res){
   res.status(200).send("Hi");
});

app.listen(8081, function(){
   console.log("Server is running");
});

1 个答案:

答案 0 :(得分:3)

您需要将一些错误处理中间件附加到您的应用程序。你如何处理这个错误取决于你,但作为你如何做的一个例子:

var bodyParser = require('body-parser');
var express = require('express');
var app = express();

app.use(bodyParser.json());

// this is a trivial implementation
app.use((err, req, res, next) => {
  // you can error out to stderr still, or not; your choice
  console.error(err); 

  // body-parser will set this to 400 if the json is in error
  if(err.status === 400)
    return res.status(err.status).send('Dude, you messed up the JSON');

  return next(err); // if it's not a 400, let the default error handling do it. 
});

app.post('/test', function(req, res){
   res.status(200).send("Hi");
});

app.listen(8081, function(){
   console.log("Server is running");
});