2015-03-10 5 views
7

nehme ich eine einfache Express.js Anwendung haben wie folgt aus:Wie kann ich einen Routen-Handler manuell in Express-Js auslösen?

var express = require('express'); 
var app = express(); 

app.get('/', function(req, res) { 
    return res.json({ hello: 'world' }); 
}); 

module.exports = app; 

Ich möchte in der Befehlszeile erforderlich ist, um die Anwendung zu gehen, um der Lage sein, den Server zu starten und eine Anfrage simulieren. Etwas wie folgt aus:

var app = require('./app'); 
app.listen(3000); 
app.dispatch('/') // => {hello:"world"} 
+0

Sie können eine Anfrage mit dem 'http' Modul machen. – Scimonster

+0

Ich würde gerne wissen, wie Express das intern handhabt, ich habe den Quellcode durchsucht, aber ich konnte es ehrlich nicht finden. – brielov

+0

Express hat nicht wirklich so etwas, da Sie alles über die Anfrage und die Antwort ausspionieren müssten. – loganfsmyth

Antwort

0

Soweit mir bekannt ist, gibt es keine Möglichkeit, zu einer bestimmten Route intern zu wechseln, aber es ist ein Weg, um Flagge die Anforderung, dann auf die nächste Route weitergehen:

Dadurch können Sie erreichen, was Sie tun möchten.

4

Sie können run-middleware Modul genau dafür verwenden. Dies funktioniert, indem Sie neue Request & Response-Objekte erstellen und Ihre App mit diesen Objekten aufrufen.

app.runMiddleware('/yourNewRoutePath',{query:{param1:'value'}},function(responseCode,body,headers){ 
    // Your code here 
}) 

Weitere Informationen:

Disclosure: Ich bin der Maintainer & ersten Entwickler dieses Moduls.

Verwandte Themen