2012-06-14 20 views
16

in veloce, ho definito alcuni percorsiCome intercettare node.js richiesta espressa

app.post("/api/v1/client", Client.create); 
app.get("/api/v1/client", Client.get); 
... 

ho definito come gestire le richieste all'interno di un controller client. C'è un modo per eseguire alcune pre-elaborazioni sulle richieste, prima di gestirle nel mio controller? In particolare, voglio verificare se il chiamante API è autorizzato ad accedere al percorso, utilizzando la nozione di livelli di accesso. Tutto il consiglio sarebbe apprezzato.

+0

Pensa di connetterti/esprimi come un massaggiatore con molte mani, ogni mano è un middleware che massaggia la tua richiesta nella risposta corretta. Quindi quello che dice Ryan Olds è corretto al 100%. ;) – Pickels

risposta

39

Puoi fare ciò che ti serve in due modi.

Questo posizionerà un middleware che verrà utilizzato prima di colpire il router. Assicurarsi che il router sia stato aggiunto con app.use() dopo. L'ordine del middleware è importante.

app.use(function(req, res, next) { 
    // Put some preprocessing here. 
    next(); 
}); 
app.use(app.router); 

È inoltre possibile utilizzare un middleware di route.

var someFunction = function(req, res, next) { 
    // Put the preprocessing here. 
    next(); 
}; 
app.post("/api/v1/client", someFunction, Client.create); 

Questo farà un passo di pre-elaborazione per quella rotta.

Nota: assicurarsi che i richiami di app.use() siano prima delle definizioni del percorso. La definizione di un percorso aggiunge automaticamente app.router alla catena del middleware, che potrebbe metterlo davanti al middleware definito dall'utente.

+0

Grazie mille, questa è una risposta fantastica! –

+0

Bello! Grazie, Ryan – luigi7up

+0

@ ryan-olds, Come posso controllare "Content-Type"? Devo impostare la scadenza solo su JSON, non in tutte le risposte. –

Problemi correlati