簡體   English   中英

如何執行對由node.js服務器處理的http請求的查詢字符串中的特定參數序列的檢查?

[英]How do I enforce a check for a particular sequence of parameters in the querystring of an http request handled by a node.js server?

來自node.js文檔

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

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

當我在服務器端解析參數時,是否可以檢查這些參數是否以正確的順序發送?

例如,我要強制foo=bar始終是FIRST參數,依此類推。 這是如何實現的?

現在,我可以執行以下操作:

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')

您還可以檢查此問題以自行解析: 如何在JavaScript中獲取查詢字符串值?

或者,您可以依靠以下事實:nodejs將按照接收到的順序插入屬性,而v8會保留該順序(這不是很可靠,它們可能會改變行為): if (Object.keys(queryData)[0] === 'foo')

或者,您可以僅檢查foo是否首先出現:

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

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

您最好做一個老式的string.split,因為它為您提供了一系列拆分元素。 然后您可以檢查陣列

我如何分割字符串,在特定字符處斷開?

檢查此代碼是否對您有用:

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

var rankOfObjects = {"0":"foo","1":"baz","2":"corge"};
var objArray = Object.keys(obj);

if(checkRank()){
    console.log("in order");
}else{
    console.log("not in order");
}

function checkRank(){
    for(var rank in objArray){
        if(objArray[rank]!=rankOfObjects[rank]){
             return false;
        }
     }
     return true
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM