Diciamo che ho più posti dove chiamo response.send(someData)
. Ora voglio creare un singolo intercettore globale in cui catturo tutti i metodi .send
e apporta alcune modifiche a someData
. C'è un modo in express.js? (ganci, ascoltatori, intercettori, ...)?express.js - come intercettare response.send()/response.json()
7
A
risposta
17
è possibile definire un middleware come sotto (preso e modificato da questa answer)
function modifyResponseBody(req, res, next) {
var oldSend = res.send;
res.send = function(data){
// arguments[0] (or `data`) contains the response body
arguments[0] = "modified : " + arguments[0];
oldSend.apply(res, arguments);
}
next();
}
app.use(modifyResponseBody);
3
Sì, questo è possibile. Ci sono due modi per farlo, uno è quello di utilizzare una libreria che fornisce l'intercettazione, con la possibilità di eseguirlo basa su una condizione specifica: https://www.npmjs.com/package/express-interceptor
L'altra opzione è quella di creare solo il proprio middleware (per espresso) come segue:
function modify(req, res, next){
res.body = "this is the modified/new response";
next();
}
express.use(modify);
Problemi correlati
- 1. Node.js/Express.js - Come sovrascrivere/intercettare la funzione res.render?
- 2. Express.js + Less: Come configurare correttamente
- 3. Come intercettare node.js richiesta espressa
- 4. Intercettare eccezioni
- 5. Express.js con websockets
- 6. Express.js chiudi risposta
- 7. Express.js POST req.body vuoto
- 8. Posso intercettare Task.Factory.StartNew?
- 9. Intercettare WM_DELETE_WINDOW su X11?
- 10. Gancio di arresto Express.js
- 11. Carica file nell'app Express.js
- 12. Express.js Visualizza "globals"
- 13. Socket.io session senza express.js?
- 14. Come terminare una risposta POST express.js/node?
- 15. Come ricaricare la pagina corrente in Express.js?
- 16. come installare vecchia versione di express.js
- 17. Come lanciare un errore 404 in express.js?
- 18. Come montare le sotto-applicazioni express.js?
- 19. Come accedere all'oggetto ejs in express.js
- 20. Come ottengo node.js express.js sulla porta 80
- 21. Come si rileva l'ambiente in un'app express.js?
- 22. Retrofit - risposte Intercettare globalmente
- 23. Javascript: Come intercettare il cambiamento di window.location
- 24. Android - Come intercettare la 'Installare l'applicazione' intento
- 25. Come intercettare un AsyncClientHttpRequest usando AsyncRestTemplate?
- 26. Come intercettare tutti gli eventi touch?
- 27. Come intercettare le richieste AJAX in QtWebKit?
- 28. Come intercettare il modulo in modo affidabile?
- 29. Come intercettare l'evento del pulsante Indietro
- 30. Come intercettare lo stack overflow con pthread?
ho provato quanto sopra e funziona. Tuttavia res.send viene invocato due volte per tutti i metodi HTTP (POST, PUT, DELETE) e viene richiamato una sola volta per GET. Qualche idea sul perché res.send viene invocato due volte? – KBJ
res.send = oldSend aggiungendo la riga precedente prima di richiamare il metodo oldSend corregge il problema sopra citato. Grazie! – KBJ
Grazie a @Jugz, una spiegazione su come risolvere il problema sarebbe grandiosa, grazie. – Aukhan