在 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 参数的默认值的主要内容,如果未能解决你的问题,请参考以下文章