23

現在のバージョンのbody-parserでは、extendedオプション when usingbodyParser.urlencoded()が必須になりました。README では、次のように説明されています。

拡張オプションを使用すると、クエリ文字列ライブラリ (false の場合) または qs ライブラリ (true の場合) を使用して URL エンコードされたデータを解析することを選択できます。

[...]

デフォルトは true ですが、デフォルトの使用は推奨されていません。qs と querystring の違いを調べて、適切な設定を選択してください。

これに関する役立つ情報や具体的な情報は見つかりませんでした。非推奨のnode-querystringしか見つかりませんでした。

このオプションは常に true にする必要がありますか?

4

1 に答える 1

47

このメッセージの理由は、body-parserのデフォルト値をextendedからtruefalse変更しようとしているためです。

拡張プロトコルはqsライブラリを使用してデータを解析しx-www-form-urlencodedます。の主な利点qsは、非常に強力なシリアライゼーション/デシリアライゼーション アルゴリズムを使用して、json のようなデータ構造をシリアライズできることです。

x-www-form-urlencodedしかし、フラットな HTML フォームをシリアル化するように設計されているため、Web ブラウザーは通常このプロトコルを使用しません。ただし、 を使用して豊富なデータ構造を送信する場合は便利ですajax

querystringlibrary`は、基本的なシリアライゼーション/デシリアライゼーション アルゴリズムを提供します。これは、フォーム データをシリアライズするためにすべての Web ブラウザで使用されるアルゴリズムです。この基本アルゴリズムは拡張アルゴリズムよりも大幅に単純ですが、フラットなデータ構造に制限されています。

どちらのアルゴリズムも、フラット データに対してまったく同じように機能します。

両方のアルゴリズムの長所と短所を理解したら、アプリケーションにどちらが適しているかを判断するのはあなた次第です。

于 2015-03-21T00:13:08.060 に答える