クエリ文字列#

安定性: 2 - 安定

ソースコード: lib/querystring.js

node:querystring モジュールは、URL クエリ文字列を解析およびフォーマットするためのユーティリティを提供します。以下を使用してアクセスできます。

const querystring = require('node:querystring'); 

querystring は <URLSearchParams> よりもパフォーマンスに優れていますが、標準化された API ではありません。パフォーマンスが重要でない場合、またはブラウザコードとの互換性が望ましい場合は、<URLSearchParams> を使用してください。

querystring.decode()#

querystring.decode() 関数は querystring.parse() のエイリアスです。

querystring.encode()#

querystring.encode() 関数は querystring.stringify() のエイリアスです。

querystring.escape(str)#

  • str <string>

querystring.escape()メソッドは、指定された`str` に対して、URL クエリ文字列の特定の要件に最適化された方法で URL パーセントエンコーディングを実行します。

querystring.escape() メソッドは querystring.stringify() によって使用され、一般的に直接使用されることは想定されていません。これは主に、アプリケーションコードが必要に応じて `querystring.escape` を別の関数に割り当てることによって、代替のパーセントエンコーディング実装を提供できるようにするためにエクスポートされます。

querystring.parse(str[, sep[, eq[, options]]])#

  • 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` オプションを指定する必要があります。

// Assuming gbkDecodeURIComponent function already exists...

querystring.parse('w=%D6%D0%CE%C4&foo=bar', null, null,
                  { decodeURIComponent: gbkDecodeURIComponent }); 

querystring.stringify(obj[, sep[, eq[, options]]])#

  • obj <Object> URL クエリ文字列にシリアライズするオブジェクト
  • sep <string> クエリ文字列内のキーと値のペアを区切るために使用される部分文字列。 **デフォルト:** `'&'`.
  • eq <string> クエリ文字列内のキーと値を区切るために使用される部分文字列。 **デフォルト:** `'='`.
  • オプション
    • 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: '' });
// Returns 'foo=bar&baz=qux&baz=quux&corge='

querystring.stringify({ foo: 'bar', baz: 'qux' }, ';', ':');
// Returns 'foo:bar;baz:qux' 

デフォルトでは、クエリ文字列内でパーセントエンコーディングを必要とする文字は UTF-8 としてエンコードされます。別のエンコーディングが必要な場合は、別の `encodeURIComponent` オプションを指定する必要があります。

// Assuming gbkEncodeURIComponent function already exists,

querystring.stringify({ w: '中文', foo: 'bar' }, null, null,
                      { encodeURIComponent: gbkEncodeURIComponent }); 

querystring.unescape(str)#

  • str <string>

querystring.unescape()メソッドは、指定された `str` に対して URL パーセントエンコードされた文字のデコードを実行します。

querystring.unescape() メソッドは querystring.parse() によって使用され、一般的に直接使用されることは想定されていません。これは主に、アプリケーションコードが必要に応じて `querystring.unescape` を別の関数に割り当てることによって、代替のデコード実装を提供できるようにするためにエクスポートされます。

デフォルトでは、`querystring.unescape()` メソッドは、JavaScript 組み込みの `decodeURIComponent()` メソッドを使用してデコードを試みます。それが失敗した場合、不正な形式の URL でスローしない、より安全な同等のものが使用されます。