2014-12-13 4 views
6

Rückkehr Wenn es mit einem Boom Fehler von meinem Hapi Weg antworten ...Hapi keine Daten Attribut von Boom Fehlern

{ 
     method: 'PUT', 
     path:'foo', 
     handler: function (request, reply) { 
     reply(Boom.badRequest('something', { stuff: 'and more' })); 
     } 
} 

... Ich erhalte die folgende Antwort:

{"statusCode":400,"error":"Bad Request","message":"something"}

Es fehlt das Datenobjekt, das die Details des Fehlers liefert! Was ist das Problem?

+0

Welche Version von hapi? –

+0

7.2.0. Eine Antwort mit dem, was ich gefunden habe, schreiben. –

Antwort

11

Auf der Hapi documentation es verweist auf die output.payload Eigenschaft auf dem Ausleger Objekt, Voreingestellt statusCode, error und message aufzunehmen.

Ich war die Details vom Boom Fehler Ausgang der Lage, durch .details auf diesem Objekt einstellen:

{ 
     method: 'PUT', 
     path:'foo', 
     handler: function (request, reply) { 
     var err = Boom.badRequest('something', { stuff: 'and more' }); 
     err.output.payload.details = err.data; 
     reply(err); 
     } 
} 

Nicht die ideale Sache in der Welt, aber wahrscheinlich ein sicherer Standard.

+0

Es sieht so aus, als ob man es so machen soll. – aknuds1

1

Ich hatte die gleiche Frage, und obwohl ich nicht den Ansatz können Sie getroffen haben, gibt es die folgenden in der Boom FAQ:

Frage Wie kann ich zusätzliche Informationen in meinen Antworten enthalten ? output.payload fehlt Daten, was gibt?

Antwort Es gibt einen Grund, warum die übergebenen Werte wieder nach unten in der Antwort-Payloads ziemlich gesperrt sind. Es ist hauptsächlich für die Sicherheit und um keine wichtigen Informationen an den Client zu verlieren. Das bedeutet, dass Sie ein wenig mehr Mühe geben müssen, zusätzliche Informationen über Ihren benutzerdefinierten Fehler einzuschließen. Schauen Sie sich den Abschnitt "Error transformation" in der Dokumentation hapi an.

auch:

ich, dass (seltsam) gefunden, wie pro die docs Antwort gibt (aber das Beispiel für die Verwendung nicht), ignoriert eine Nachricht an badImplementation ist vorbei, während eine Nachricht an notImplemented vorbei - Beide sind 5xx Fehler.

Docs für: badImplementation vs notImplemented