Javascript 如何在express中处理空路由参数

Javascript 如何在express中处理空路由参数,javascript,api,express,Javascript,Api,Express,我试图处理一个空的路由参数,如果没有指定路径,我想返回一个新的日期,如果路由参数是空的。到目前为止,服务器的响应如下:无法获取/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({"uni

我试图处理一个空的路由参数,如果没有指定路径,我想返回一个新的日期,如果路由参数是空的。到目前为止,服务器的响应如下:无法获取/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新日期响应,有人知道如何捕获空路由参数吗?

您可以很好地检查参数是否存在。但你只有在那个if块中才有反应。我将它移出了if块,以便您始终发送响应。仅当
req.params.date\u字符串
不存在时才不存在

编辑:我进一步添加了问号,以表明您的URL参数是可选的,正如justin在回答中指出的那样

app.get(“/api/timestamp/:date\u string?”),函数(req,res){
让dateString=req.params.date\u字符串
如果(!请求参数日期\字符串){
dateString=新日期()
}  
res.json({“unix”:dateString.getTime(),“utc”:dateString.ToutString()})
})

您可以很好地检查参数是否存在。但你只有在那个if块中才有反应。我将它移出了if块,以便您始终发送响应。仅当
req.params.date\u字符串
不存在时才不存在

编辑:我进一步添加了问号,以表明您的URL参数是可选的,正如justin在回答中指出的那样

app.get(“/api/timestamp/:date\u string?”),函数(req,res){
让dateString=req.params.date\u字符串
如果(!请求参数日期\字符串){
dateString=新日期()
}  
res.json({“unix”:dateString.getTime(),“utc”:dateString.ToutString()})
})

Express使用regexp的路径,因此您可以在此处查看该文档:


您可以在参数末尾添加问号,使其成为可选参数,例如…/timestamp/:date\u string?

Express使用regexp的路径,因此您可以在此处查看该文档:


您可以在参数末尾打问号,使其成为可选参数,如…/timestamp/:date\u string?

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

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

  • 未定义
  • 空的


它也有一些价值

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

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

  • 未定义
  • 空的


它也有一些值

,您在哪里看到有文件证明,参数末尾的
使其成为可选的?我在for parameters中找不到,如果你对regex按ctrl键f,这只是简单地提到过,而不是在可选的tough上下文中,他们可能会认为我们知道这一点,因为我们知道regex。因此,您可能需要将我们的两个答案结合起来。因此,使用regex路径表示,他们会告诉您更多关于它的信息。看起来相关文档是。express已经使用regexp的
路径。您不需要自己专门使用它。我对你的答案投了赞成票,但现在你建议OP必须使用额外的软件包,这是不正确的。这已经内置到Express中。它已经是一个Express功能了。您在哪里看到有文档记载,参数末尾的
使其成为可选功能?我在for parameters中找不到,如果你对regex按ctrl键f,这只是简单地提到过,而不是在可选的tough上下文中,他们可能会认为我们知道这一点,因为我们知道regex。因此,您可能需要将我们的两个答案结合起来。因此,使用regex路径表示,他们会告诉您更多关于它的信息。看起来相关文档是。express已经使用regexp的
路径。您不需要自己专门使用它。我对你的答案投了赞成票,但现在你建议OP必须使用额外的软件包,这是不正确的。这已经内置到Express中。这已经是一个特写了。