簡體   English   中英

Express.js | express.Router和路由參數輸入

[英]Express.js | express.Router and route parameter input

我正在編寫一個小程序來練習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");
});

怎么了?

您的路由器未獲取參數。 在您的name.js(路由器)上設置參數:

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

而您在server.js上的根路由:

app.use('/', name);

基本上,您的路由器將在root上被調用,但是需要一個參數。

這應該可以解決您的問題,“歡迎”字樣仍會顯示在根目錄上。 這是因為路由器需要一個參數,因此,如果沒有,則將運行您的最后一個app.get方法。

希望能有所幫助!

您需要在路線中標記參數。 嘗試這樣的事情:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM