クエリ文字列
ソースコード: lib/querystring.js
node:querystring
モジュールは、URL クエリ文字列の解析とフォーマットを行うユーティリティを提供します。次のようにアクセスできます。
const querystring = require('node:querystring')
querystring
は <URLSearchParams> よりもパフォーマンスに優れていますが、標準化された API ではありません。パフォーマンスが重要でない場合、またはブラウザコードとの互換性が望ましい場合は、<URLSearchParams> を使用してください。
querystring.decode()
追加されたバージョン: v0.1.99
querystring.decode()
関数は querystring.parse()
のエイリアスです。
querystring.encode()
追加されたバージョン: v0.1.99
querystring.encode()
関数は querystring.stringify()
のエイリアスです。
querystring.escape(str)
追加されたバージョン: v0.1.25
str
<string>
querystring.escape()
メソッドは、URL クエリ文字列の特定の要件に合わせて最適化された方法で、指定された str
に対して URL パーセントエンコードを実行します。
querystring.escape()
メソッドは querystring.stringify()
によって使用され、一般的には直接使用されることは想定されていません。これは主に、アプリケーションコードが querystring.escape
を代替関数に割り当てることで、代替パーセントエンコード実装を提供できるようにするためにエクスポートされています。
querystring.parse(str[, sep[, eq[, options]]])
[履歴]
バージョン | 変更点 |
---|---|
v8.0.0 | 複数の空のエントリが正しく解析されるようになりました(例:&=&= )。 |
v6.0.0 | 返されたオブジェクトは、もはや Object.prototype から継承しません。 |
v6.0.0, v4.2.4 | eq パラメータの長さが 1 より大きくなるようになりました。 |
v0.1.25 | 追加されたバージョン: v0.1.25 |
str
<string> 解析する URL クエリ文字列sep
<string> クエリ文字列でキーと値のペアを区切るために使用される部分文字列。デフォルト:'&'
。eq
<string> クエリ文字列でキーと値を区切るために使用される部分文字列。デフォルト:'='
。options
<Object>decodeURIComponent
<Function> クエリ文字列でパーセントエンコードされた文字をデコードする際に使用する関数。デフォルト:querystring.unescape()
。maxKeys
<number> 解析するキーの最大数を指定します。キーカウントの制限を削除するには0
を指定します。デフォルト:1000
。
querystring.parse()
メソッドは、URL クエリ文字列 (str
) をキーと値のペアのコレクションに解析します。
たとえば、クエリ文字列 'foo=bar&abc=xyz&abc=123'
は次のように解析されます。
{
"foo": "bar",
"abc": ["xyz", "123"]
}
querystring.parse()
メソッドによって返されるオブジェクトは、JavaScript の Object
からプロトタイプ的に継承しません。これは、obj.toString()
、obj.hasOwnProperty()
などの一般的な Object
メソッドが定義されておらず、動作しませんことを意味します。
デフォルトでは、クエリ文字列内のパーセントエンコードされた文字は UTF-8 エンコーディングを使用すると仮定されます。代替文字エンコーディングを使用する場合は、代替 decodeURIComponent
オプションを指定する必要があります。
// gbkDecodeURIComponent関数が既に存在すると仮定...
querystring.parse('w=%D6%D0%CE%C4&foo=bar', null, null, { decodeURIComponent: gbkDecodeURIComponent })
querystring.stringify(obj[, sep[, eq[, options]]])
追加日: v0.1.25
obj
<Object> URL クエリ文字列にシリアライズするオブジェクトsep
<string> クエリ文字列において、キーと値のペアを区切るために使用する部分文字列。デフォルト:'&'
。eq
<string> クエリ文字列において、キーと値を区切るために使用する部分文字列。デフォルト:'='
。options
encodeURIComponent
<Function> クエリ文字列において、URL で安全でない文字をパーセントエンコーディングに変換する際に使用する関数。デフォルト:querystring.escape()
。
querystring.stringify()
メソッドは、オブジェクトの「自身のプロパティ」を反復処理することで、与えられたobj
から URL クエリ文字列を生成します。
obj
に渡される以下の型の値をシリアライズします: <string> | <number> | <bigint> | <boolean> | <string[]> | <number[]> | <bigint[]> | <boolean[]> 数値は有限でなければなりません。その他の入力値は空文字列に変換されます。
querystring.stringify({ foo: 'bar', baz: ['qux', 'quux'], corge: '' })
// 'foo=bar&baz=qux&baz=quux&corge=' を返します
querystring.stringify({ foo: 'bar', baz: 'qux' }, ';', ':')
// 'foo:bar;baz:qux' を返します
デフォルトでは、クエリ文字列内でパーセントエンコーディングが必要な文字は UTF-8 でエンコードされます。代替エンコーディングが必要な場合は、代替のencodeURIComponent
オプションを指定する必要があります。
// gbkEncodeURIComponent関数が既に存在すると仮定して、
querystring.stringify({ w: '中文', foo: 'bar' }, null, null, { encodeURIComponent: gbkEncodeURIComponent })
querystring.unescape(str)
追加日時: v0.1.25
str
<string>
querystring.unescape()
メソッドは、与えられたstr
に対して URL パーセントエンコードされた文字のデコードを実行します。
querystring.unescape()
メソッドはquerystring.parse()
によって使用され、一般的に直接使用されることは想定されていません。これは主に、必要に応じてquerystring.unescape
を代替関数に割り当てることで、アプリケーションコードが置換デコード実装を提供できるようにするためにエクスポートされています。
デフォルトでは、querystring.unescape()
メソッドは JavaScript 組み込みのdecodeURIComponent()
メソッドを使用してデコードを試みます。それが失敗した場合、不正な URL で例外をスローしない、より安全な同等の方法が使用されます。