2017-02-24 10 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

関連する問題