我的express路由设置冲突了.如何解决啊?请大家帮忙看看.非常感谢!
发布于 8 年前 作者 caihuattkl 3512 次浏览 来自 问答

我的express路由设置冲突了.如何解决啊?请大家帮忙看看.非常感谢!

‘/[a-zA-Z0-9_-]+/[a-zA-Z0-9_-]+/:id’: { get: ‘class.class’ }, ‘/[0-9A-Za-z_-]+/[0-9A-Za-z_-]+/*.html’: { get: ‘articles.articles’ }, ‘/api/newsClass/list’: { get: “api_newsClass.newsClassList”, }, 上面两个是前台的路由,因为目录是动态的.所有要怎么匹配啊,但又跟后台的api路由冲突!!! 我要怎么改…后面api开头的是api接口

10 回复

把后台的放到上面去

后台的前台的为什么要放在一起 分开不就好了吗

@liujavamail 问题是,前台现在也有冲突的了!

/[a-zA-Z0-9_-]+/[a-zA-Z0-9_-]+/:id’: { get: ‘class.class’ }, ‘/[0-9A-Za-z_-]+/[0-9A-Za-z_-]+/*.html’: { get: ‘articles.articles’ },

这2个冲突

@slclub 分开?我是用的一个路由表,就是一个对象装的所有路由.不知道怎么分开呢!

就不能通过正则规避这种情况吗?

你的需求是怎样的, 为什么会写成这样的正则,路由最好是简单明了

module.exports = { ‘/’: { get: ‘home.home’, }, ‘/[0-9A-Za-z_-]+/:id.html’: { get: ‘channel.channel’ }, ‘/[a-zA-Z0-9_-]+/[a-zA-Z0-9_-]+/:id.html’: { get: ‘class.class’ }, ‘/[0-9A-Za-z_-]+/[0-9A-Za-z_-]+/[0-9A-Za-z_-]+.html’: { get: ‘articles.articles’ }, //登录,提交数据 ‘/login’: { get: “admin.login”, post: “admin.loginPost” }, ‘/checkcode*’: { get: “pngCode.captchap” }, //登出 ‘/logout’: { get: “admin.logout” }, //验证权限 ‘/admin*’: { get: “admin.authenticated” }, /* api接口 新浪股票指数接口 * / ‘/api/sina/’: { get: “api_foreign.stockIndex” }, '/api/’: { get: “admin.apiAuthenticated” }, /* 后台页面相关 * / '/admin/.html’: { get: “admin.adminHome” }, ‘/admin/newsList?’: { get: “admin.newsList” }, ‘/admin/addNews?’: { get: “admin.addNews” }, ‘/admin/editNews?’: { get: “admin.editNews” }, /* api接口 users 用户 * / ‘/api/users’: { put: “api_users.putUser”, get: “api_users.users”, post: “api_users.addUser” }, ‘/api/users/:id’: { get: “api_users.getUser”, delete: “api_users.delUser” }, / api接口 newsClass 新闻分类 * */ ‘/api/newsClass’: { put: “api_newsClass.putNewsClass”, post: “api_newsClass.addNewsClass”,

},
'/api/newsClass/list': {
	get: "api_newsClass.newsClassList",
},
'/api/newsClass/:id': {
	delete: "api_newsClass.delNewsClass",
	get:"api_newsClass.newsClassDetail"
},
'/api/newsClass/:id/classList': {
	get: "api_newsClass.newsTopClassList",
},
/*
 api接口 reportClass 报告分类
 * */
'/api/reportClass': {
	put: "api_reportClass.putReportClass",
	post: "api_reportClass.addReportClass",
	
},
'/api/reportClass/list': {
	get: "api_reportClass.reportClassList",
},
'/api/reportClass/:id': {
	delete: "api_reportClass.delReportClass",
	     get:"api_reportClass.reportClassDetail"
},
'/api/reportClass/:id/classList': {
	get: "api_reportClass.reportTopClassList",
},
/*
 api接口 news 新闻api
 * */
'/api/news': {
	put: "api_news.putNews",
	post: "api_news.addNews",
	
},
'/api/newsList': {
	get: "api_news.newsList",
},
'/api/news/:id': {
	delete: "api_news.delNews",
	     get:"api_news.newsDetail"
}

};

@liujavamail 上面是我的路由表.你看是一个json,我通过控制器绑定.实现的所有路由都装到一个json里面…这样好管理!现在主要是他冲突了…所以有什么方法比如,正则来规避吗?

你写正则表达式的时候,可以指定固定的前缀吗? 比如说/articles/[0-9A-Za-z_-]+/[0-9A-Za-z_-]+/[0-9A-Za-z_-]+.html , /channel/[a-zA-Z0-9_-]+/[a-zA-Z0-9_-]+/:id.html,

可以写前缀!!至少这样前面就多了一层 我想实现这样的url结构 频道页 localhost/zhengquan/4.html 栏目页 localhost/zhengquan/shichang/1.html

现在前台的冲突我已经解决了…主要是前台跟后台api接口的冲突不好弄…express的正则没有排除某个字符?比如,是api开头的排除掉!

回到顶部