node.js - 一个 GET 请求,但被 express、node.js 中的多个 .get 函数捕获
问题描述
客户端只发送了一个请求,但多个 .get 函数正在捕获该请求。
这是我的代码。
const app = express()
app.get('/', (req, res) => {
console.log('home');
res.send('home');
});
app.get('/:var1', (req, res) => {
console.log('var1');
res.send('var1');
});
app.get('/:var1/:var2', (req, res) => {
console.log('var2');
res.send('var2');
});
app.listen(4000, () => {
console.log('listening in 4000')
});
我所期望的是
when /:
console: home
browser: home
when /foo:
console: var1
browser: var1
when /foo/bar:
condole: var2
browser: var2
然而,实际结果是
when /:
console: home and var1
browser: home
when /foo:
console: var1 and var1
browser: var1
when /foo/bar:
condole: var2 and var1
browser: var2
如果结果是因为 NonBlocking-IO,为什么会出现两次 var1?为什么浏览器只得到一个响应?如何使用快速路由更改结果?
解决方案
上述行为是快速路由。
从设计的角度来看,您不需要 3 条不同的路线来进行简单的参数更改
你可以去
const app = express()
app.get('/?var1=12&var2=34', (req, res) => {
console.log('home');
var params = req.query.var1.
res.send('home');
});
app.listen(4000, () => {
console.log('listening in 4000')
});
您可以在一条路线中处理所有
推荐阅读
- php - 如何在 PHP7 中做同样的 Nodejs 加密 aes 加密 CTR?
- javascript - 猫鼬模型,字符串数组,对象数组结构
- javascript - 添加新选择框时如何控制选择框?
- java - 如何访问在另一个类中定义的对象?
- javascript - Jquery Serialize 无法发布到 laravel 控制器
- python - 使用 gensim 加载训练有素的 fasttext 模型时出现问题
- keyboard - 我安装了一个注册表来更改我的键盘布局。如何卸载
- php - 如何通过 PHP 从 JSON 中获取 stdObject 功能
- python - Python PyQt5 webview无法打开没有url创建的标签
- java - 在 JUnit4 中断言两个列表相等