Express.js | express.Router和路由参数输入

时间:2018-06-24 14:30:10

标签: javascript express

我有一个正在编写的用于练习Express.js的小程序。

我有一个单独的路由器,我想根据路由发送响应。因此,如果转到“ / santiago”,则必须发送“ Hi Santiago”,但现在它发送“ Hi undefined”。 路由器name.js的代码:

//name.js
const express = require('express');
const router = express.Router();

router.get('/', (req,res)=>{
    res.send("Hi " + req.params.name);
});

module.exports = router;

这是app.js的代码:

//app.js
const express = require('express');
const app = express();
let port = process.env.PORT || 3000;
app.listen(port);

const name = require('./name');

app.use('/:name', name);

app.get('/', (req,res)=>{
    res.send("Welcome");
});

怎么了?

2 个答案:

答案 0 :(得分:1)

您的路由器未获取参数。 在您的name.js(路由器)上设置参数:

router.get('/:name', (req,res)=>{
    res.send("Hi " + req.params.name); 
});

以及您在server.js上的根路由:

app.use('/', name);

基本上,您的路由器将在root用户上被调用,但是需要一个参数。

这应该可以解决您的问题,并且'Welcome'仍会打印在root上。这是因为路由器需要一个参数,因此,如果没有,则将运行您的最后一个app.get方法。

希望有帮助!

答案 1 :(得分:0)

您需要在路线中标记参数。尝试这样的事情:

app.get('/:name', (req,res) => {
    const { name } = req.params
    res.send("Hi " + name)
});