我是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);
答案 0 :(得分:0)
您可以决定如何从API传回错误。
如果错误是您服务器的内部错误,而不是由糟糕的API请求直接导致的错误,那么您可能会返回500状态代码(内部服务器错误)。
response.status(500).end();
如果有一些有意义的东西可以回传到API的另一端(就像查询没有找到或特定的验证错误那样),那么你必须设计你想要的东西。例如,您可能会发回一些JSON:
response.json({result: null, msg: "Validation Failed"});
因此,在特定情况下,您希望API返回的是什么。重点是你决定你想要什么样的响应,并将它作为响应发送,即使在错误条件下也是如此。你需要使它成为一个对API的消费者有意义的设计,这样他们就可以清楚地告诉他们什么时候有正确的结果,并清楚地告诉他们什么时候出错,如果错误是他们的错,他们需要能够告诉你为什么基于响应是他们的错(因此他们在响应中提供的问题更详细,更好)。