params hash如何在express.js中工作?

时间:2014-02-02 02:21:44

标签: javascript express

我不明白params是如何运作的。

我知道这是一个对象,但我不确定它是如何工作或形成的?

阅读文档后:http://expressjs.com/api.html#req.param

以下是我使用的似乎正在运行的params哈希的代码示例。

function showLoot(req,res) {
  var id = req.params.id;
  console.log(req.params.id);
  console.log(req.params);
  res.setHeader("Content-Type", 'text/html');
  res.send("<html><head><title>Adventures - NodeSlash</title></head><body><h1>Ogre-slaying knife</h1><p>It has +9 against ogres. It was id #" + id + "</p></body></html>");
}

这是路线:

app.get("/loot/:id",       showLoot);

来自

的是console.log
  console.log(req.params.id); // 1
  console.log(req.params); // [ id: '1' ]

如果我将另一个ID传递给url app.get('/ loot /:id')

我得到(当传入5时)

 console.log(req.params.id; // 5
 console.log(req.params); // [ id: '5' ]

我猜这是一个对象数组? 它存放在哪里? 每个请求都有它自己的params对象,这是神奇的吗? 此外,它如何采用/ loot /:id中的路由号并放置它?为什么':'添加到:id?

1 个答案:

答案 0 :(得分:0)

路由中的参数允许您使用可变组件处理一组路由。例如,假设您要为系统中的每个用户返回一个页面。您可以处理允许用户ID成为其中一部分的路由:

app.get('/user/:userId', function(req, res, next) { ... });

通过在:userId部分中使用冒号,您说要为以/user/开头且后跟某个值的任何路线运行此函数。

Express然后将请求的值存储在req.params对象中。见http://expressjs.com/api.html#req.params