首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >特快专递中是否可能有有条件的路线?

特快专递中是否可能有有条件的路线?
EN

Stack Overflow用户
提问于 2018-03-26 15:35:14
回答 1查看 2.2K关注 0票数 1

我想做什么

代码语言:javascript
复制
if req is from mobile

first check these routes
router.use('/', mobileRoutes);

then ones below
router.use('/', routes);

但据我所知,express在每次请求时都会遍历所有use语句,它只运行它们一次,并将路由处理程序放入某种数组中。会被请求击中。

对于一些urls,我想服务器不同的页面,但不是全部(loginPage,registrationPage等)。

是否有可能进行有条件的路由,在满足某些条件的情况下预先安排更多的路由。

我要做的是:

代码语言:javascript
复制
router.use(function (req, res, next) {
    let md = new MobileDetect(req.headers["user-agent"]);
    if (md.mobile()) {
        req.url = '/mobile'+req.url;
    }
    next();
});

//mobile routes
router.use("/mobile", require("./mobile"));

但它完全挡住了下面所有的路线。

我想要一个干净的解决方案,另一个不干净的选项是向单个路由添加中间件,但这会不断地混淆代码。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-26 16:26:08

我的条件路由解决方案:

index.js

代码语言:javascript
复制
 .....
//mobile routes
router.use("/", require("./mobile"));

router.get("/", require("./get"));
.....

mobile.js

代码语言:javascript
复制
const express = require("express");
const router = express.Router();
const MobileDetect = require("mobile-detect");

router.use(function (req, res, next) {
    let md = new MobileDetect(req.headers["user-agent"]);
    (md.mobile())? next() : next("router")
});


router.get("/", function (req, res) {
    res.send({ query: req.query });
});


module.exports = router;
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49495319

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档