Node.JSはGETを取得して、POSTデータのqueryStringモジュールの使い方を詳しく説明します.

5736 ワード

フロントエンドでもバックエンドでも、よく現れるアプリケーションシーンはURLにおけるパラメータの処理です.nodeJSのqueryStringモジュールはいくつかのquery strigsを処理するツールを提供します.本論文では、nodeJSの中のqueryStringを詳しく紹介します.

var querystring = require('querystring');
/*
{ unescapeBuffer: [Function],
 unescape: [Function: qsUnescape],
 escape: [Function],
 encode: [Function],
 stringify: [Function],
 decode: [Function],
 parse: [Function] }
 */
console.log(querystring);
序文化
querystring.parse(str[,sep[,eq[,options]])
querystring.parse()方法は、URLクエリ文字列(str)をキーペアのセットに解析できます.パラメータは以下の通りです.
str解析するURLは文字列を検索します.
sepは、クエリー文字列のキーペアのサブ文字列を定義するために使用されます.デフォルトは'&'です
eqは、クエリー文字列の中のキーと値を規定するサブ文字列に使用される.デフォルトは'='です
options
    decodeURIComponentは、クエリー文字列の百分番符号化された文字を復号する際に使用される関数です.デフォルトはquerystring.unescapeです.   
maxKeysは解析するキーの最大数を指定します.デフォルトは1000です.0に指定すると削除キー数の制限があります.

var querystring = require('querystring');

var str = 'foo=bar&abc=xyz&abc=123';

console.log(querystring.parse(str));//'{ foo: 'bar', abc: [ 'xyz', '123' ] }'
第二のパラメータは、クエリー文字列のキーペアを定義するサブ文字列です.

var querystring = require('querystring');

var str = 'foo=bar&abc=xyz&abc=123';

console.log(querystring.parse(str,'a'));//{ foo: 'b', 'r&': '', bc: [ 'xyz&', '123' ] }
第3のパラメータは、クエリー文字列のキーと値を定義するサブ文字列です.

var querystring = require('querystring');

var str = 'foo=bar&abc=xyz&abc=123';

console.log(querystring.parse(str,'&','c'));//{ 'foo=bar': '', ab: [ '=xyz', '=123' ] }
[注意]querystring.parse()メソッドから返されたオブジェクトは、JavaScriptのObjectから引き継がれません.これは、典型的なObject方法、例えば、Obje.toString()、Obj.hasOwnProperty()などが定義されておらず、使用できないことを意味する.
デフォルトでは、照会文字列の百分番コードの文字はUTF-8符号化が使用されていると考えられます.別の文字コードを使用する場合は、decodeURIComponentオプションが指定されます.

var querystring = require('querystring');

//{ w: '����', foo: 'bar' }

console.log(querystring.parse('w=%D6%D0%CE%C4&foo=bar', null, null,{ decodeURIComponent: 'gbkDecodeURIComponent' }));
querystrings.strigify(obj[,sep][,eq][,options])
querystringy.strigify()方法は、querystring.parse()方法の逆方向操作であり、オブジェクトの固有属性を遍歴することによって、所与のobjからURLクエリ文字列を生成し、パラメータは以下の通りである.
objは、まずURLクエリ文字列のオブジェクトに列化されます.
sepは、クエリー文字列のキーペアのサブ文字列を定義するために使用されます.デフォルトは'&'です
eqは、クエリー文字列の中のキーと値を規定するサブ文字列に使用される.デフォルトは'='です
options
    encodeURIComponentは、URLに対して不安全な文字をクエリ文字列の百分番コードに変換する際に使用する関数です.デフォルトはquerystring.escapeです.

var querystring = require('querystring');

//'foo=bar&baz=qux&baz=quux&corge='

console.log(querystring.stringify({ foo: 'bar', baz: ['qux', 'quux'], corge: '' }));

var querystring = require('querystring');

//'foo:bar;baz:qux'

console.log(querystring.stringify({foo: 'bar', baz: 'qux'}, ';', ':'));
queryStringモジュールコード
querystring.escape(str)
querystrings.escape()方法は、所与のstrに対してURL百分コードを実行し、encodeURIComponent方法と同じです.
querystring.escape()方法は、querystring.strigify()に使用され、通常は直接使用されない.対外開放されたのは、必要な時に、querystrings.escapeに一つの関数を割り当てることによって、コードを書き換えることができるためです.

var querystring = require('querystring');

console.log(encodeURIComponent('  '));//%E6%B5%8B%E8%AF%95

console.log(querystring.escape('  '));//%E6%B5%8B%E8%AF%95
querystring.unescape(str)
querystring.unescape()メソッドは、所与のstr上のURL百分番コードの文字を復号する.
querystring.unescape()方法は、querystring.parse()のために使用され、通常は直接使用されない.外部に開放されたのは、必要な時に、querystring.unescapeに一つの関数を割り当てることによって、復号の実現を書き換えるためです.
querystringn.unescape()メソッドはデフォルトではJavaScript内蔵のdecodecodeURIComponent()メソッドを使って復号します.

var querystring = require('querystring');

console.log(decodeURIComponent('%E6%B5%8B%E8%AF%95'));//'  '

console.log(querystring.unescape('%E6%B5%8B%E8%AF%95'));//'  '
ノード.JSはGETデータを取得します.
get要求のデータはURLに保存されます.

http://127.0.0.1:8080/home/test?a=1&b=2
var http = require('http');
var url = require('url');
var querystring = require('querystring');
http.createServer(function(req,res){
  var urlObj = url.parse(req.url);
  var query = urlObj.query;
  var queryObj = querystring.parse(query);
  console.log(req.url);//'/home/test?a=1&b=2'
  console.log(query);//'a=1&b=2'
  console.log(queryObj);//{ a: '1', b: '2' }
}).listen(8080);
Node.JSはPOSTデータを取得します.
postが要求したデータはバッファに書き込まれます.requestのdataイベントとendイベントによってデータをつなぎ合わせて処理する必要があります.

var http = require('http');
var url = require('url');
var querystring = require('querystring');
http.createServer(function(req,res){
  var str = ''; 
  req.on('data', function(thunk){
    str += thunk;
  });
  req.on('end', function(){
    console.log(str);//'name=a&email=b%40b.com'
    var queryObj = querystring.parse(str);
    console.log(queryObj);//{ name: 'a', email: 'b%40b.com' }
  }); 
もっとNode.JSについてGETを取得して、POSTデータの文章は下記の関連リンクをクリックしてください.