Node.js NodeJs/Expressjs,一个数组中的多个路由路径,如何获取哪个路径被装载?
假设来自浏览器的请求如下 第一个Url条件应该是什么?您可以使用或:Node.js NodeJs/Expressjs,一个数组中的多个路由路径,如何获取哪个路径被装载?,node.js,express,routing,Node.js,Express,Routing,假设来自浏览器的请求如下 第一个Url条件应该是什么?您可以使用或: console.log(请求源代码) 在您的情况下(尝试): 或(更干净): 第二种方式更常见 像这样的东西可能有用 var express = require('express'); var exampleRouter = express.Router(); projectRouter.get('/example/cat/:id/subcat/:subId',function(req, res){ //
console.log(请求源代码)
在您的情况下(尝试):
或(更干净):
第二种方式更常见 像这样的东西可能有用
var express = require('express');
var exampleRouter = express.Router();
projectRouter.get('/example/cat/:id/subcat/:subId',function(req, res){
// It should enter here do something..
});
projectRouter.get('/example/:id/:subId/',function(req, res){
// Second route
});
可能重复的originalUrl和path将给出确切的请求路径,而不是路由器阵列中定义的路径。假设来自浏览器的请求类似于这个projectRouter.get(['/example/cat/:id/subcat/:subId','/example/:id/:subId/'',]),函数(req,res){如果(第一个url){//它应该在这里输入/*做点什么..*/}如果(第二个url){/*做点什么..*/});同意。但我的要求是避免在两条路线上重复常见的事情。所以我想把两条路线合并成一条,我也需要做一些不同的事情。我的疑问是,如果expressjs提供了一个从一个数组路由多条路径的选项,为什么它不能给出选择了哪一条路径?这可能可行,但我正在寻找一个没有正则表达式的答案。我的疑问是,如果expressjs提供了一个从一个数组路由多条路径的选项,为什么它不能给出选择了哪一条路径呢?正则表达式将修剪任何开始/结尾的斜杠。它也可以在没有正则表达式的情况下工作。
var express = require('express');
var exampleRouter = express.Router();
projectRouter.get([
'/example/cat/:id/subcat/:subId', /*1st URL*/
'/example/:id/:subId/', /*2nd URL*/
],function(req, res){
if(req.url == "/example/cat/:id/subcat/:subId"){
// It should enter here do something..*/
} else if(req.url == "/example/:id/:subId/"){
// do something..
}
});
var express = require('express');
var exampleRouter = express.Router();
projectRouter.get('/example/cat/:id/subcat/:subId',function(req, res){
// It should enter here do something..
});
projectRouter.get('/example/:id/:subId/',function(req, res){
// Second route
});
projectRouter.get([
'/example/cat/:id/subcat/:subId', /*1st URL*/
'/example/:id/:subId/', /*2nd URL*/
],function(req, res){
var param = req.url.replace(/^\/|\/$/g, '').split('/');
if(param[1] == "cat" && param[3] == "subcat"){
// It should enter here do something..*/
} else {
// do something..
}
});