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

use*_*486 6 javascript http-get url-parameters node.js restify

我正在使用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);
} 
Run Code Online (Sandbox Code Playgroud)

现在,如果我有一个像下面这样的 HTTP GET 函数怎么办?

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

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

Kev*_*lly 8

如果只是想检查是否提供了某些内容,那么您可以这样做:

var ZZZ = req.query.ZZZ || 111;
Run Code Online (Sandbox Code Playgroud)

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

if (!parseInt(req.query.ZZZ)) {
  req.query.ZZZ = 111;
}
Run Code Online (Sandbox Code Playgroud)

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

req.query.ZZZ = parseInt(req.query.ZZZ) ? req.query.ZZZ : 111;
Run Code Online (Sandbox Code Playgroud)

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