2017-02-24 8 views
0

Ich bin neu bei node.js, ich habe eine Anforderung, wo ich versuche, den Fehler zu behandeln, der von der Callback-Methode zurückgegeben wird/Funktion. Wie weise ich den Fehler zu, der als Teil des Rückrufs an meine Antwortnutzlast gesendet wird.Wie behandelt man Callback-Fehler in node.js

Das Knotenmodul, das ich anrufe, um Swagger zu validieren, unterstützt sowohl Callback-Funktion als auch Promise.

Also, wie ich den Fehler zu meiner Antwort Payload zuordnen. Momentan logge ich mich nur auf meiner Konsole ein, aber da wir dies über eine API offen legen wollen, möchte ich die Fehlerinformationen in den Nutzdaten der Antwort zurückgeben.

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

Antwort

0

Sie können entscheiden, wie Sie den Fehler zurück von Ihrem API kommunizieren wollen.

Wenn der Fehler auf Ihrem Server intern und nicht direkt durch eine schlechte API-Anfrage verursacht wird, geben Sie wahrscheinlich einen 500-Statuscode zurück (interner Serverfehler).

response.status(500).end(); 

Wenn es etwas Sinnvolles mit dem anderen Ende des API zu kommunizieren zurück (wie nichts für die Abfrage oder einen bestimmten Validierungsfehler gefunden), dann müssen Sie entwerfen, was Sie, dass sein wollen.

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

Also, es ist wirklich an Ihnen, was Sie wollen Ihre API für eine bestimmte Situation zurück: Zum Beispiel könnten Sie einige JSON werden zurückschicken. Der Hauptpunkt ist, dass Sie entscheiden, was diese Antwort sein soll, und Sie senden es als die Antwort, sogar unter Fehlerbedingungen. Sie müssen es zu einem Design machen, das für die Konsumenten Ihrer API Sinn macht, damit sie klar erkennen können, wann sie ein richtiges Ergebnis haben und klar sagen, wann sie einen Fehler haben und wenn der Fehler ihr Fehler ist, müssen sie in der Lage sein, warum zu sagen Es ist ihre Schuld basierend auf der Antwort (also mehr Details, die Sie auf das Problem in der Antwort zur Verfügung stellen, desto besser).

+0

@DarshanShivashankar - Hat dies Ihre Frage beantwortet? Wenn dies der Fall ist, können Sie dies der Community anzeigen, indem Sie auf das grüne Häkchen links neben der Antwort klicken. Das wird dir auch einige Reputationspunkte einbringen, wenn du hier beim Stack Overflow die richtige Prozedur befolgst. – jfriend00

Verwandte Themen