Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Express或主体解析器拒绝无效的JSON主体_Json_Node.js_Express - Fatal编程技术网

如何使用Express或主体解析器拒绝无效的JSON主体

如何使用Express或主体解析器拒绝无效的JSON主体,json,node.js,express,Json,Node.js,Express,我正在创建一个只接受主体类型json并使用主体解析器和express的应用程序。不断出现的问题是,如果我发送了一个无效的json正文,那么我的程序将在控制台中向用户抛出一个愚蠢的错误。如何防止此控制台错误并拒绝带有不正确JSON主体的请求 提前感谢,, 艾弗里 附:下面是一些示例代码来说明我正在做什么: var bodyParser = require('body-parser'); var express = require('express'); var app = express();

我正在创建一个只接受主体类型json并使用主体解析器和express的应用程序。不断出现的问题是,如果我发送了一个无效的json正文,那么我的程序将在控制台中向用户抛出一个愚蠢的错误。如何防止此控制台错误并拒绝带有不正确JSON主体的请求

提前感谢,, 艾弗里

附:下面是一些示例代码来说明我正在做什么:

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");
});

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

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");
});

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

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");
});