javascript - 如何强制检查由 node.js 服务器处理的 http 请求的查询字符串中的特定参数序列?

标签 javascript node.js query-string httpserver querystringparameter

来自node.js documentation

querystring.parse('foo=bar&baz=qux&baz=quux&corge')

// returns
{ foo: 'bar', baz: ['qux', 'quux'], corge: '' }

当我在服务器端解析参数时,有没有办法检查这些参数是否按正确的顺序发送?

例如,我想强制 foo=bar 始终是第一个参数,依此类推。这是如何实现的?

现在我可以做这样的事情:

var queryData = querystring.parse('foo=bar&baz=qux&baz=quux&corge');

但是然后做

if(queryData.foo) {...}

仅检查参数“foo”是否存在于网址中,而不检查它是否位于正确的位置

最佳答案

您可以自己解析它,如下所示:

var qs = 'foo=bar&baz=qux&baz=quux&corge';
var parsed = qs.split('&').map(function (keyValue) {
    return keyValue.split('=');
});

这会给你类似的东西 [ ['foo','bar'], ['baz', 'qux'], ['baz', 'quux'], ['corge', '' ],然后你可以检查第一个是否是你想要的:if (parsed[0][0] === 'foo')

这个问题你也可以自己解析一下:How can I get query string values in JavaScript?

或者你可以相信,nodejs 会按照接收到的顺序插入属性,而 v8 将保持顺序(这并不真正可靠,它们可能会改变行为): if (Object.键(queryData)[0] === 'foo')

或者你可以检查 foo 是否首先出现:

if (qs.indexOf('foo=') === 0)

或类似 if (qs.slice(0, 4) === 'foo')

关于javascript - 如何强制检查由 node.js 服务器处理的 http 请求的查询字符串中的特定参数序列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23862513/

相关文章:

javascript - 在 Javascript 中从数组创建列表

node.js - 使用 mocha 单元测试异步 waterfall

php - 如何从 URL 获取多个查询字符串值?

javascript - IE6 丢失查询字符串

javascript - 如何模拟返回 promise 的函数并使用确切的参数验证它

javascript - 定义 jQuery Ajax 方法($.get、$.post、$.ajax、$.getScript 等)基本方法

node.js - npm install -g karma 不安装可执行文件

javascript - 向 socketio 中的特定客户端组发送消息

ajax - 在 ajax 请求中下载文件而不会遇到长查询字符串

javascript - 为什么我会收到 Uncaught TypeError : Cannot read property '0' of undefined on assign?