Node.js Express如何路由类似的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

使用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 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与您的评论相符。