2014-12-13 8 views
6

Odpowiadając z błędem z mojej trasie Boom Hapi ...Hapi nie zwraca atrybut danych od błędu Boom

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

... mam następującą odpowiedź:

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

Brakuje obiektu danych, który dostarcza szczegółów błędu! O co chodzi?

+0

Która wersja HAPI? –

+0

7.2.0. Publikowanie "odpowiedzi" na to, co znalazłem. –

Odpowiedz

11

Na Hapi documentation odwołuje właściwość output.payload na obiekcie boom, ustawiony domyślnie obejmuje statusCode, error i message.

udało mi się wyjście dane z błędem boomu ustawiając .details na tym obiekcie:

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

Nie najbardziej idealna rzecz na świecie, ale chyba bezpieczne domyślne.

+0

Wygląda na to, że właśnie tak powinieneś to zrobić. – aknuds1

1

Miałem to samo pytanie, i choć nie mogę przyjąć podejście podjęliśmy, jest następujący w Boom FAQ:

Pytanie Jak dołączyć dodatkowe informacje w moich odpowiedziach ? output.payload brakuje danych, co daje?

Odpowiedź Jest powód wartości przekazywane z powrotem do danych użytecznych odpowiedzi są całkiem zablokowana. Dotyczy to głównie bezpieczeństwa i nieudzielania ważnych informacji klientowi. Oznacza to, że musisz trochę więcej wysiłku, aby dołączyć dodatkowe informacje o niestandardowym błędzie . Zapoznaj się z sekcją "Error transformation" w dokumentacji hapi .

również:

Okazało się, że (dziwnie), a za odpowiedź Dokumenty oznacza (ale nie na przykład użycia), przekazując wiadomość do badImplementation jest ignorowana, a przepuszczenie wiadomość notImplemented - oba mają błędy 5xx.

Docs dla: badImplementation vs notImplemented

Powiązane problemy