如何在快速js中手动触发路由处理程序?

bri*_*lov 10 node.js express run-middleware

假设我有一个简单的快递js应用程序,如下所示:

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

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

module.exports = app;
Run Code Online (Sandbox Code Playgroud)

我希望能够转到命令行,需要应用程序,启动服务器并模拟请求.像这样的东西:

var app = require('./app');
app.listen(3000);
app.dispatch('/') // => {hello:"world"}
Run Code Online (Sandbox Code Playgroud)

Ami*_*ein 7

您可以run-middleware完全使用模块.这是通过创建新的请求和响应对象,并使用这些对象调用您的应用程序.

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

更多信息:

披露:我是该模块的维护者和第一个开发人员.


Ada*_*m F -1

据我所知,没有办法在内部切换到特定的路由,但有一种方法可以标记请求,然后转到下一个路由:

app.use((req, res, next) => {
    if("nextRouteCondition"){
        req.skip = true;
        return next();
    }
})
Run Code Online (Sandbox Code Playgroud)

这可能会让您完成您想做的事情。