我知道我可以在 Express 中做到这一点:
app.use('/:id', function (req, res){ // or app.get
console.log('Test param: ' + req.params.id); // "Test param: foo"
});
Run Code Online (Sandbox Code Playgroud)
获取我的 url 参数。
当我尝试使用路由器逻辑时,我做了:
索引.js
var sites = require('./routes/sites');
app.use('/:id', sites);
Run Code Online (Sandbox Code Playgroud)
路线/sites.js
var express = require('express');
var router = express.Router();
router.get('/', function(req, res, next) {
console.log(req.params.id); // logs "undefined"
// etc ...
});
module.exports = router;
Run Code Online (Sandbox Code Playgroud)
这个逻辑不起作用,我进入{}
了 shell 命令,undefined
对于req.params.id
.
知道我的逻辑哪里错了吗?
它不起作用,因为这不是 express 与其Router
s交互的方式。您没有id
在路由器内部看到的原因是因为:id
未在其范围内声明。你需要做类似的事情
app.use('/', sites);
Run Code Online (Sandbox Code Playgroud)
并在您的路由器中
var express = require('express');
var router = express.Router();
router.get('/:id', function(req, res, next) {
console.log(req.params.id);
// etc ...
});
module.exports = router;
Run Code Online (Sandbox Code Playgroud)
此外,您可以尝试app.param()
查看文档以获取示例http://expressjs.com/api.html#app.param
归档时间: |
|
查看次数: |
5339 次 |
最近记录: |