【问题标题】:NodeJS: route parameter at the first slash works but the same one at the second does notNodeJS:第一个斜杠的路由参数有效,但第二个斜杠的路由参数无效
【发布时间】:2021-10-30 05:11:36
【问题描述】:

文件myProject\app.js代码为:

app.use('/student', require('./routes/studentsRoutes'));
app.get('/loadexercise', function (req, res) {
    let result = {unit: req.query.unit, part: req.query.part};
    res.json(result);
});

文件myProject\routes\studentsRoutes.js 包含:

var express = require('express');
var router = express.Router();
router.get('/loadexercise', function (req, res) {
    let result = {unit: req.query.unit, part: req.query.part};
    res.json(result);
});
module.exports = router;

当我从浏览器运行链接http://localhost:55555/loadexercise?unit=1&part=1 时,渲染是这样的:{"unit":"1","part":"1"}

但是当我运行链接http://localhost:55555/student/loadexercise?unit=1&part=1时,它显示[]

我做错了什么?

【问题讨论】:

标签: node.js express path routes


【解决方案1】:

请求http://localhost:55555/student/loadexercise?unit=1&part=1 将落入路由/:unit,因为它有一个参数,并且此路由高于路由/loadexercise,并且Express 将loadexercise 视为unit 参数的值。
您只需将所有具有静态部分的路由移动到具有相同部分但作为动态参数的路由之前:

router.get('/loadexercise', function (req, res) {
    let result = {unit: req.query.unit, part: req.query.part};
    res.json(result);
});
router.get('/login', function(req, res, next) {});
router.post('/login', function(req, res, next) {});
router.get('/changepass', function(req, res, next) {});
router.post('/changepass', function(req, res, next) {});
router.get('/:unit', function (req, res) {
...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-07
    • 2019-05-22
    • 2020-05-29
    • 2011-03-23
    • 2013-05-25
    • 1970-01-01
    • 1970-01-01
    • 2011-05-15
    相关资源
    最近更新 更多