【问题标题】:How to handle empty route parameters in express如何处理express中的空路由参数
【发布时间】:2020-08-21 21:22:48
【问题描述】:

如果未指定路径,我会尝试处理空路由参数,如果路由参数为空,我想返回一个新日期。到目前为止,服务器的响应如下:Cannot GET /api/timestamp/

app.get("/api/timestamp/:date_string", function(req,res){

let dateString=req.params.date_string
 if(!req.params.date_string){
    dateString=new Date()
    res.json({"unix": dateString.getTime(), "utc" : dateString.toUTCString()})
  }  

})

目前服务器没有按预期响应 json 新日期,有人知道如何捕获空路由参数吗?

【问题讨论】:

    标签: javascript api express


    【解决方案1】:

    你在检查你的参数是否存在方面做得很好。但是你只有在 if 块中有你的回应。我将它移出 if 块,以便您始终发送响应。仅当 req.params.date_string 不存在时才不会。

    编辑:我还添加了问号以表明您的 URL 参数是可选的,正如贾斯汀的回答中所指出的那样。

    app.get("/api/timestamp/:date_string?", function(req,res){
    let dateString=req.params.date_string
     if(!req.params.date_string){
        dateString=new Date()
      }  
      res.json({"unix": dateString.getTime(), "utc" : dateString.toUTCString()})
    })
    

    【讨论】:

      【解决方案2】:

      Express 使用 path-to-regexp,因此您可以在此处查看该文档: https://www.npmjs.com/package/path-to-regexp#optional

      你可以在参数的末尾加上问号,使它们成为可选参数,比如 .../timestamp/:date_string?

      【讨论】:

      • 您在哪里看到它记录了参数末尾的? 使其成为可选?我在Express doc 中找不到参数。
      • 如果你 ctrl f 用于正则表达式,它只是简单地提到过,并不是在可选难的上下文中,他们可能认为我们知道这一点,因为我们知道正则表达式。所以你可能需要结合我们的两个答案。
      • 所以使用 path-to-regex 表达,他们会告诉你更多关于它的信息npmjs.com/package/path-to-regexp
      • 相关文档好像是here。
      • Express 已经使用path-to-regexp。您不需要自己专门使用它。我赞成你的回答,但现在你建议 OP 必须使用一个额外的包,这是不正确的。这已经内置在 Express 中。它已经是 Express 功能。
      【解决方案3】:

      在您的情况下,您只需使用:

      app.get("/api/timestamp/:date_string?", function(req,res){
      
      let dateString=req.params.date_string
       if(!req.params.date_string){
          dateString=new Date()
        }  
        res.json({"unix": dateString.getTime(), "utc" : dateString.toUTCString()})
      })
      

      您可以简单地检查任何变量或值是否存在,

      if(variable){
         // this condition executed only when the variable has value.
      }
      

      if(variable) 当给定变量不是时返回 true

      • 未定义
      • 空
      • NaN

      与

      它也有一些价值

      【讨论】:

        猜你喜欢
        • 2023-03-05
        • 1970-01-01
        • 2022-11-28
        • 1970-01-01
        • 2015-08-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-04
        相关资源
        最近更新 更多