gpt4 book ai didi

Node.JS相当于getContextPath、getServletPath?

转载 作者:塔克拉玛干 更新时间:2023-11-01 19:07:38 25 4
gpt4 key购买 nike

我正在开发一个网络服务器,它将为同一域中的各种“网络应用程序”加载各种模块。

在下面的例子中,

createServer(function (req, res) { // crude request routing example
var path = url.parse(req.url).pathname
if(path.match(/^\/cats(?:\/|$)/))
require('./cats.js')(req, res)
else if(path.match(/^\/dogs(?:\/|$)/))
require('./dogs.js')(req, res)
else
require('./404.js')(req, res)
})

if 语句检查匹配的上下文路径,并将其路由到适当的模块。

现在模块 cats.js 看起来像这样:

module.exports = function (req, res) {
var path = url.parse(req.url).pathname
// HOW can I get context path and path info? What variables should I use?
if(req.path == '/cats/add') {
//....
} else if(req.path == '/cats/delete') {
//....
} else
// 404
}

问题是,接下来我将更新上下文路径,因此用户将不得不转到 /somethingelse 而不是 /cats 才能到达 cats.js

因此,cats.js 不应检查 /cats/add,而应查找 $CONTEXT/add .

将“上下文路径”和“路径信息”传递给 cats.js 的好方法是什么?我正在考虑制作一些东西并将其附加到 req 对象上,但这肯定是一个常见问题并且有一个普遍接受的正确解决方案?

最佳答案

您可以让 cat.js 导出一个函数,该函数采用路径 arg 并使用它来动态创建请求处理程序:

module.exports = function(context){
return function (req, res) {
var path = url.parse(req.url).pathname
if(req.path == '/'+context+'/add') {
//....
}
//....
}
}

正如其他人所提到的,Express.JS 内置了此功能,并且将成为普遍接受的解决方案,除此之外您可以随意滚动。

关于Node.JS相当于getContextPath、getServletPath?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28802689/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com