【问题标题】:Set default value for URL parameter in HTTP GET in node.js在 node.js 中的 HTTP GET 中设置 URL 参数的默认值
【发布时间】: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

【问题讨论】:

    标签: javascript node.js http-get url-parameters restify


    【解决方案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 值。
    猜你喜欢
    • 2018-07-21
    • 1970-01-01
    • 2011-10-31
    • 2015-02-19
    • 1970-01-01
    • 1970-01-01
    • 2015-10-12
    • 2019-10-22
    • 1970-01-01
    相关资源
    最近更新 更多