【问题标题】:Default values for route parameters in javascriptjavascript中路由参数的默认值
【发布时间】:2021-01-08 13:17:38
【问题描述】:

我正在尝试在 javascript 中简化我的一些代码。可以传入2个路由参数,然后相乘。

如果没有传入参数,我希望为参数设置一个默认值,例如 firstnum 和 secondnum 都是 4。目前我已将我的代码设置为每个场景的三个独立函数(传递 0、1 或 2 个参数) . 我是否也可以限制参数(例如他们只能输入数字)?

例如,这需要 2 个参数:

app.get('/multi/:num1/:num2', function (request, response) {
 var firstnum = request.params.num1;   
 var secondnum = request.params.num2;
 var multiply = firstnum * secondnum
response.write(multiply)
response.send();

取1个参数:

app.get('/multi/:num1 function (request, response) {
var firstnum = request.params.num1;   
 var secondnum = 4
 var multiply = firstnum * secondnum
response.write(multiply)
response.send();

【问题讨论】:

  • 编写一个单独的处理函数,如function multiply (res, firstnum, secondnum) {...},在其中发回回复。现在编写各个路由处理程序并从它们内部调用multiply(...)
  • 对不起,我不太清楚你的意思,你能举个简单的例子吗?

标签: javascript express parameters routes


【解决方案1】:

您可以对网址使用正则表达式:

multi/:num1?/:num2?

这使您的请求参数是可选的。所以应该是:

app.get('/multi/:num1?/:num2?', function (request, response) {
   var firstnum = request.params.num1 ? request.params.num1:4;   
   var secondnum = request.params.num2 ? request.params.num2:4;
   var multiply = firstnum * secondnum
   response.write(multiply)
   response.send();
}

我们在这里所做的是通过三元表达式检查request.params.num1request.params.num2 是否不是undefined。如果它们被定义,我们使用它们的值。否则,我们将其设置为 4,这是您的默认设置。

阅读更多express documentation

Express 使用 path-to-regexp 来匹配路由路径;有关定义路由路径的所有可能性,请参阅 path-to-regexp 文档。 Express Route Tester 是一款用于测试基本 Express 路由的便捷工具,尽管它不支持模式匹配。

关于你问题的最后一部分,请参考this question的第一个答案

【讨论】:

    猜你喜欢
    • 2020-05-17
    • 2017-01-17
    • 2016-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-17
    • 2016-08-21
    • 2019-02-06
    相关资源
    最近更新 更多