簡體   English   中英

404向Express路線添加參數時

[英]404 when adding params to Express route

我正在嘗試傳遞網址參數

HTTP:// XXX / API /用戶facebookUserId = 10213594301678639

這是我的App.js:

// route setup
const usersRouter = require('./routes/users');
app.use('/api/users', usersRouter);

module.exports = app;

這是我的users.js:

router.get('/:facebookUserId', jsonParser, async (req, res) => {
  // get user by facebookUserId
  const users = db.collection('users');  
  const facebookUserId = req.params.facebookUserId; 
  const query = {
    facebookUserId: facebookUserId,
  };
  const user = await findOne(users, query);
  res.json(user);
});

module.exports = router;

我的問題是我一加就得到404

:facebookUserId

到router.get()

看來您正在嘗試獲取查詢字符串,而不是從獲取端點路由獲取參數。

users.js中 ,從req.query獲取查詢字符串

// as your path is the same with the endpoint prefix api/users, use '/'
router.get('/', jsonParser, async (req, res) => {
  // get user by facebookUserId
  const users = db.collection('users');  

  // get the query string from req.query
  const facebookUserId = req.query.facebookUserId; 

  const query = {
    facebookUserId: facebookUserId,
  };
  const user = await findOne(users, query);
  res.json(user);
});

module.exports = router;

如果您想像在原始代碼中那樣使用參數/:facebookUserId ,則需要將端點調用更改為類似http://xxx/api/users/10213594301678639

在您的路由中,您期望參數facebookUserId是一個路由參數(例如/ api / users / 10213594301678639),但是在上面的示例中,您正在使用查詢參數(/ api / users?facebookUserId = 10213594301678639)調用路由)

執行以下操作以捕獲查詢參數的工作方式:

router.get(':facebookUserId?' ... (req, res) => { 
 ... 
 const facebookUserId = req.query.facebookUserId; 
 ... 
});

暫無
暫無

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

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