Node.js NodeJS表示根路径
在NodeJS Express模块中,指定路径“/”将捕获多个HTTP请求,如“/”、“lib/main.js”、“images/icon.gif”等 在上面的示例中,如果Node.js NodeJS表示根路径,node.js,express,Node.js,Express,在NodeJS Express模块中,指定路径“/”将捕获多个HTTP请求,如“/”、“lib/main.js”、“images/icon.gif”等 在上面的示例中,如果验证定义如下 var authenticate = function(request, response, next) { console.log("=> path = " + request.path); next() } 然后你就会看到 => path = / => path = /li
验证定义如下
var authenticate = function(request, response, next) {
console.log("=> path = " + request.path);
next()
}
然后你就会看到
=> path = /
=> path = /lib/main.js
=> path = /images/icon.gif
有谁能建议如何在Express“app.使用”that only catch“/”中定义路径吗?如果您试图公开静态文件,人们通常会将这些文件放在名为public/
的文件夹中。express具有名为static
的内置中间件,用于处理对此文件夹的所有请求
var express = require('express')
var app = express();
app.use(express.static('./public'));
app.use('/', authenticate);
app.get('/home', function(req, res) {
res.send('Hello World');
});
现在,如果将图像/css/javascript文件放在公共位置,则可以访问它们,就像public/
是根目录一样
<script src="http://localhost/lib/main.js"></script>
据我所知,您需要做的是,如果您有“/”和“/abc”,您需要单独捕获它
这将实现以下目的:
app.use('/abc', abc);
app.use('/', authenticate);
也就是说,首先注册/abc中间件,然后再注册/abc中间件
这个解决方案也有一个问题。这里我们只声明了/abc。所以当用户调用一个未注册的路径时,它会点击这里。
您可以使用请求对象中的originalUrl属性来确定其/唯一性或存在其他内容。以下是这方面的文档:
顺便说一句,声明中间件和路由的顺序很重要。感谢您的评论。但这不是问题所在。使用您的示例,无论路径如何,都将调用authenticate方法,这是我的问题。
app.use('/abc', abc);
app.use('/', authenticate);
if(req.originalUrl !== '/'){
res.status(404).send('Sorry, we cannot find that!');
}
else{
/*Do your stuff*/
}