在 node.js 中的 HTTP GET 中设置 URL 参数的默认值

Posted

技术标签:

【中文标题】在 node.js 中的 HTTP GET 中设置 URL 参数的默认值【英文标题】:Set default value for URL parameter in HTTP GET in node.js 【发布时间】:2016-06-07 18:32:07 【问题描述】:

我正在使用 node.js restify。

我有一个如下所示的 HTTP GET 请求;

http://127.0.0.1//read_val?XXX=123&YYY=456&ZZZ=789

在我的处理函数中,获取URL参数,相关代码会是这样的;

var api_get_func = function (app, url_path) 
    function respond(req, res, next) 
        var XXX= req.query.XXX;
        var YYY = req.query.YYY;
        var ZZZ = req.query.ZZZ;

        //SQL query ...
        return next();
    

    app.get(url_path, respond);
 

现在,如果我有一个像下面这样的 HTTP GET 函数呢

http://127.0.0.1//read_val?XXX=123&YYY=456

URL 中未提供ZZZ 参数。如何修改代码以使ZZZ 使用默认值,例如111

【问题讨论】:

【参考方案1】:

如果只是想检查是否提供了某些东西,那么你可以这样做:

var ZZZ = req.query.ZZZ || 111;

但是... GET 参数是查询字符串,所以我们可能要确保它是一个数字。

if (!parseInt(req.query.ZZZ)) 
  req.query.ZZZ = 111;

或者如果你想用它获得三元:

req.query.ZZZ = parseInt(req.query.ZZZ) ? req.query.ZZZ : 111;

请注意,其他参数是字符串,并且此默认设置为数字。因此,您可能想要'111' 而不是111。此外,您可以parseInt 所有查询字符串或toString 它们全部(如果它们都是数字),只需尝试确保它们都保持相同的预期类型。当然,除非这些都是文本字符串,在这种情况下忽略所有这些。

【讨论】:

'' 不真实;其余部分如下【参考方案2】:
var api_get_func = function (app, url_path) 
    function respond(req, res, next) 
        var XXX= req.query.XXX;
        var YYY = req.query.YYY;
        var ZZZ = req.query.ZZZ || <YOUR DEFAULT VALUE>;

        //SQL query ...
        return next();
    `enter code here`

    app.get(url_path, respond);
 

【讨论】:

看起来非常简单。此解决方案是否仅适用于 node.js restify? 这是一个通用的 javascript 东西。类似if (req.query.ZZZ || 111),返回真值。 你也可以使用它,如果这个值可以是0,那么你可以像使用简单的三级运算符(?:)一样 req.query.ZZZ === '未定义' ? '默认':req.query.ZZZ @Atul Agrawal,您的回答很好,但我认为 Kevin Reilly 的更好。抱歉,我只能将一个答案标记为答案。【参考方案3】:

在一行中,最好的方法是:

let limit = parseInt(req.query.limit || 0);
let page = parseInt(req.query.pagina || 1);
let offset = page * limit

因为你输入了一个默认值然后你解析内容。

req.query.limit || 0

此行检查内容是否发送,如果没有,将0作为默认值

【讨论】:

请注意,如果 req.query.limit 为“abc”,则 parseInt 可能会返回 NaN 值。

以上是关于在 node.js 中的 HTTP GET 中设置 URL 参数的默认值的主要内容,如果未能解决你的问题,请参考以下文章

在Node.js SOAP客户端中设置授权

如何在 Dockerfile 中设置 Node 环境变量以运行 node.js 应用程序?

在 Node.js 中设置计时器

在 WebStorm 中设置 Node.js 环境变量

从 Node.js 中设置全局环境变量

如何在 Node.js 中设置 dotenv 文件?