我有两条路线:app.use提供静态文件。
app.use('/test', earlyAccess(), express.static(path.join(__dirname, staticFolder)))
app.get("/test", callback);
app.get("/test/:id", callback);
// Here is the callback
var fileStream = fs.createReadStream(staticFolder + '/test.html');
fileStream.on('open', function () {
fileStream.pipe(res);
});
在浏览器中,如果我拨打localhost:80/test/1
- 工作正常。
但如果我拨打localhost:80/test
- 它会被重定向到主页面。在服务器控制台中,我收到304警告。
如何在expressjs中使用基于参数的路由?
答案 0 :(得分:0)
尝试使用res.sendFile代替fs.createReadStream
,例如:
res.sendFile('test.html');
答案 1 :(得分:0)
您可以在回调中检查请求参数,
app.get('/test', callback);
app.get('/test/123', callback);
// callback
if(req.params.second) {
// code for route with param. - /test/123
}
else {
// code for route without param. - /test
}
请求中的参数存储在req.params中
{first:'NameOfRoute', second:'NextParam'} ...
所以在这里,
{first:'test', second:'123'}
答案 2 :(得分:-3)
app.use("/test/*", (req, res, next) => {
// your callback(req, res);
next();
});
app.get("/test/:id", callback);
app.use
,意思是你可以编写一个中间件,它会调用next();