javascript - 当路由参数为一定值时如何添加自定义路由来表达
问题描述
情况
我有一条如下所示的路线:
router.get('/api/v1/tokens/:token_name', middleware1, middleware2)
它适用于token_name
. 现在,我想为一个新token_name
值添加处理(假设它是token_name: baz
),但是这个有一个特殊的条件,需要另一个中间件,我们称之为它middleware0
,运行之前middleware1
和middleware2
我试过的
我现在处理它的方式是添加另一条优先于上述路线的路线,如下所示:
router.get('/api/v1/tokens/baz', middleware0, middleware1, middleware2)
router.get('/api/v1/tokens/:token_name', middleware1, middleware2)
但是现在我无法访问token_name
其他中间件中的变量,这是他们执行逻辑所必需的。
问题
有没有办法只使用快速路由器来解决这个问题,而不是向中间件添加任何代码?就像,要匹配特定值,还要将其添加为变量?
解决方案
您可以使用单条路线有条件地执行您的middleware0
,如下所示
const middleware0 = (req, res, next) => {
if (req.params.token_name !== 'baz') {
next();
return;
}
// actual middleware code handling request
};
router.get('/api/v1/tokens/:token_name', middleware0, middleware1, middleware2);
推荐阅读
- html - 使用 jquery 将 div 添加到所有特定的子类 div 之后
- java - 相同的环境(詹金斯节点),较慢的可执行jar
- go - 多值列表外键sql gorm
- python - 为 VS Code IntelliCode 加载 Python 时出错
- r - 线性回归模型的简单斜率图
- html - 放大时引导图像不是静态的
- sql - 在 Impala 中添加一个新列以更新复杂类型
- c - 计数数组值错误
- php - 如何在 Laravel ffmpeg 中修剪视频并获得输出?
- python - 如何使用 django_elasticsearch_dsl 在 Django 中的 NestedField 内索引 JSONField?