NodeJS:第一个斜杠处的路由参数有效,但第二个斜杠处的路由参数无效
NodeJS: route parameter at the first slash works but the same one at the second does not
文件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;
当我从浏览器 运行 link http://localhost:55555/loadexercise?unit=1&part=1
时,渲染是这样的:{"unit":"1","part":"1"}
.
但是当我运行 link http://localhost:55555/student/loadexercise?unit=1&part=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) {
...
文件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;
当我从浏览器 运行 link http://localhost:55555/loadexercise?unit=1&part=1
时,渲染是这样的:{"unit":"1","part":"1"}
.
但是当我运行 link http://localhost:55555/student/loadexercise?unit=1&part=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) {
...