2014-12-13 7 views
6

Quando si risponde con un errore di braccio da mio percorso Hapi ...Hapi non restituisce attributo data dall'errore Boom

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

... ottengo la seguente risposta:

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

Manca l'oggetto dati che fornisce i dettagli dell'errore! Qual è l'accordo?

+0

Quale versione di Hapi? –

+0

7.2.0. Pubblicare una "risposta" con ciò che ho trovato. –

risposta

11

Sulla Hapi documentation fa riferimento la proprietà output.payload sull'oggetto boom, impostata di default per includere statusCode, error e message.

sono stato in grado di emettere i dettagli da l'errore del braccio impostando .details su questo oggetto:

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

Non è la cosa più ideale del mondo, ma probabilmente un default di sicurezza.

+0

Sembra che questo sia il modo in cui dovresti farlo. – aknuds1

1

Ho avuto la stessa domanda, e anche se non posso prendere l'approccio che hai preso, non v'è il seguente nella Boom FAQ:

Domanda Come faccio a inserire informazioni extra nelle mie risposte ? output.payload mancano i dati, cosa dà?

Risposta C'è un motivo per cui i valori restituiti nei payload di risposta sono piuttosto bloccati. È principalmente per la sicurezza e per non perdere nessuna informazione importante sul . Ciò significa che sarà necessario inserire per aggiungere ulteriori informazioni sull'errore personalizzato . Controlla la sezione "Error transformation" nella documentazione di hapi .

anche:

ho scoperto che (stranamente), come per la risposta docs indica (ma non l'utilizzo ad esempio), passando un messaggio a badImplementation viene ignorato, mentre passando un messaggio a notImplemented - entrambi sono errori 5xx.

Documenti per: badImplementation vs notImplemented

Problemi correlati