具有不同参数的ExpressJS路由

时间:2016-09-21 01:55:53

标签: javascript node.js express

我有两条路线: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中使用基于参数的路由?

3 个答案:

答案 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();