web-dev-qa-db-ja.com

body-parser-拡張オプション(qsとクエリ文字列)

body-parser の現在のバージョンでは、bodyParser.urlencoded()を使用する場合のextendedオプションが必要になりました。 READMEでは、次のように説明しています。

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

[...]

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

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

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

19
c..

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

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

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

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

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

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

34