如何在express-subdomain中为同一子域名配置多个路由文件
解决express-subdomain下多路由文件挂载到api子域名的问题
你当前的问题在于,index.js导出的是包含两个路由对象的普通对象,但express-subdomain要求传入的是一个Express Router实例,不是这种集合对象,所以没法正确挂载。
直接修改index.js,创建一个根Router来整合两个子路由即可:
修改后的index.js
const express = require('express'); const authRouter = require("./auth.routes"); const utilsRouter = require("./utils.router"); // 创建api子域名的根路由实例 const apiRootRouter = express.Router(); // 将auth路由挂载到/api/auth路径(可根据需求调整前缀) apiRootRouter.use('/auth', authRouter); // 将utils路由挂载到/api/utils路径 apiRootRouter.use('/utils', utilsRouter); // 导出整合后的根路由 module.exports = apiRootRouter;
app.js保持现有逻辑即可
var apiRouter = require("./routes/testing/index"); app.use(subdomain("api", apiRouter));
这样配置后:
- 访问
api.yourdomain.com/auth/xxx会匹配auth.routes.js里的路由 - 访问
api.yourdomain.com/utils/xxx会匹配utils.routes.js里的路由
如果不需要前缀,也可以直接把两个路由挂载到根路径(apiRootRouter.use(authRouter)),但要注意避免两个路由文件里出现相同的路径,否则会出现路由冲突。
另外要确保express-subdomain的注册顺序在其他普通路由之前,这样子域名的路由会优先匹配。
内容的提问来源于stack exchange,提问作者Marco Gatto
相关产品推荐
相关产品推荐

