2017-02-24 19 views
0

我是新來的node.js,我有一個要求,我試圖處理從回調方法/函數返回的錯誤。我如何將作爲回調一部分發送的錯誤分配給我的響應負載。如何處理node.js中的回調錯誤

我打電話來驗證swagger的節點模塊支持回調函數以及Promise。

那麼如何將錯誤分配給我的響應負載。目前我只是登錄到我的控制檯,但因爲我們打算通過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); 
 
\t console.log("Inside Error"); 
 
\t 
 
    } 
 
    else { 
 
    console.log("API name: %s, Version: %s", api.info.title, api.info.version); 
 
\t console.log("Inside Success"); 
 
\t 
 
    } 
 
}); **/ 
 

 
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

你可以決定要如何錯誤從API傳送回。

如果錯誤是服務器內部的錯誤,而不是由差的API請求直接引起的,那麼您可能會返回500狀態碼(內部服務器錯誤)。

response.status(500).end(); 

如果有一些有意義的東西回來傳達給API的另一端(如發現查詢或特定的驗證錯誤沒有),那麼你要設計你想要的是什麼。例如,你可能會被髮回一些JSON:

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

所以,這真的取決於你希望你的API返回給定情況下是什麼。主要的一點是,你決定你想要這個迴應是什麼,並且你把它作爲迴應發送,即使在錯誤的情況下。您需要將其設計爲對API的消費者有意義的設計,以便他們可以清楚地分辨何時他們有合適的結果,並清楚地告訴他們何時出現錯誤,以及錯誤是否是他們的錯誤,他們需要能夠說明原因這是他們的錯誤基於迴應(因此他們在回答中提供的關於該問題的更多細節越好)。

+0

@DarshanShivashankar - 這是否回答了您的問題?如果確實如此,則可以通過點擊答案左側的綠色複選標記來向社區表明。這也將爲您在堆棧溢出時遵循適當的過程贏得一些聲望點。 – jfriend00