我想扩展这个开放主题:Add Routes at Runtime (ExpressJs),遗憾的是它对我的帮助不够。
我正在开发一个允许创建在 NodeJs 上运行的不同 API 的应用程序。用户界面如下所示:
如您所见,这段代码包含两个端点(GET、POST),一旦我按下“保存”,它就会创建一个 .js 文件,该文件位于 Nodejs 应用程序正在寻找其端点的路径中(例如:myProject \dynamicRoutes\rule_test.js)。
我遇到的问题是 Nodejs 服务器在我开发代码时正在运行,除非我再次重新启动服务器(并且 ExpressJs 检测到文件),否则我无法调用这些新端点。
有没有办法在 NodeJs (ExpressJs) 运行时注册新路由?
我试图做以下事情但没有运气:
应用程序.js
如果服务器重新启动,这将起作用。我试图包含这个库(express-dynamic-router,但在运行时不起作用。)
//this is dynamic routing function
function handleDynamicRoutes(req,res,next) {
var path = req.path; //http://localhost:8080/api/rule_test
//LoadModules(path)
var controllerPath = path.replace("/api/", "./dynamicRoutes/");
var dynamicController = require(controllerPath);
dynamicRouter.index(dynamicController[req.method]).register(app);
dynamicController[req.method] = function(req, res) {
//invocation
}
next();
}
app.all('*', handleDynamicRoutes);
最后,我阅读了这篇文章(#NodeJS / #ExpressJS:在运行时动态添加路由),但我不知道这对我有什么帮助。
我相信这可能以某种方式成为可能,但我感到有点失落。任何人都知道我怎样才能做到这一点?每次创建文件后,我都会收到 CANNOT GET 错误。