如何处理node.js中的回调错误

时间:2017-02-24 01:53:00

标签: node.js

我是node.js的新手,我有一个要求,我正在尝试处理从回调方法/函数返回的错误。如何将作为回调一部分发送的错误分配给我的响应有效负载。

我调用验证swagger的节点模块同时支持回调函数和Promise。

那么如何将err分配给我的响应有效负载。目前我只是登录到我的控制台,但由于我们计划通过API公开它,我想在响应有效负载中返回错误信息。

var express = require('express');
var SwaggerParser = require('swagger-parser');
var myParser = require("body-parser");
var app = express();
var fs = require("fs");

app.use(myParser.urlencoded({extended : true}));
app.use(myParser.json());

function errorHandler (err, req, res, next) {
  res.status(500)
  res.render('error', { error: err })
}

app.post('/v1/swagger/validate',function(request,response){

/**SwaggerParser.validate(request.body, function(err, api) {
  if (err) {
    console.error(err);
	console.log("Inside Error");
	
  }
  else {
    console.log("API name: %s, Version: %s", api.info.title, api.info.version);
	console.log("Inside Success");
	
  }
}); **/

SwaggerParser.validate(request.body)
  .then(function(api) {
    console.log("API name: %s, Version: %s", api.info.title, api.info.version);
  })
  .catch(function(err) {
    console.error(err);
  });

response.end();

});

app.listen(8082);

1 个答案:

答案 0 :(得分:0)

您可以决定如何从API传回错误。

如果错误是您服务器的内部错误,而不是由糟糕的API请求直接导致的错误,那么您可能会返回500状态代码(内部服务器错误)。

response.status(500).end();

如果有一些有意义的东西可以回传到API的另一端(就像查询没有找到或特定的验证错误那样),那么你必须设计你想要的东西。例如,您可能会发回一些JSON:

response.json({result: null, msg: "Validation Failed"});

因此,在特定情况下,您希望API返回的是什么。重点是你决定你想要什么样的响应,并将它作为响应发送,即使在错误条件下也是如此。你需要使它成为一个对API的消费者有意义的设计,这样他们就可以清楚地告诉他们什么时候有正确的结果,并清楚地告诉他们什么时候出错,如果错误是他们的错,他们需要能够告诉你为什么基于响应是他们的错(因此他们在响应中提供的问题更详细,更好)。