Node.js Express如何路由类似的url链接?
使用node.js和express开发web应用程序 我要区分以下两个URL:Node.js Express如何路由类似的url链接?,node.js,express,Node.js,Express,使用node.js和express开发web应用程序 我要区分以下两个URL: /api/v1/来源?id=122323 /api/v1/来源?时间戳=155505055,计数=10 我想出了一个天真的解决办法。我将类似的URL留给一个路由方法,并使用if eles指定解决方案,即: if(id){ //solution with id } if(timestamp&&count){ //solution with timestamp and count but withou
if eles
指定解决方案,即:
if(id){
//solution with id
}
if(timestamp&&count){
//solution with timestamp and count but without id
}
显然,这不干净。因为在未来,我可能想增加新的领域,这将使这个路由器巨大和丑陋
那么我怎样才能克服这个问题呢?或者更改url结构。我想构建一个Restful api。您可以使用
req.params
if(req.params.id){
//solution with id
}
if(req.params.timestamp && req.params.count){
//solution with timestamp and count but without id
}
尝试将所有属性放在一个列表中,并使用检查数组中的所有值是否计算为true 也许是这样的:
((/*req,res*/)=>{
//虚拟快速请求对象
常数要求={
参数:{
//id:'123',
计数:10,
时间戳:155505055,
newParameter:“任意值”
}
}
设{params}=req;
让{
身份证件
计数
,时间戳
,newParameter
}=参数;
如果(id){
log('Action with id');
返回;
}
设secondConditionArray=[
计数、时间戳、newParameter
];
if(secondConditionArray.every(布尔)){
console.log('第二个操作')
}否则{
console.log('某些值不是真实值')
}
})()
实际上,这正是我在问题中提出的。我建议使用多条路由到同一路径,如果不满足条件,请调用可选参数next()
,以允许下一个路由处理程序处理未处理的请求。这样做至少可以让你在更高的层次上更清楚地分解逻辑。是的!你说得对!我将编辑以使我的anwser与您的评论相符。