body-parser の現在のバージョンでは、bodyParser.urlencoded()
を使用する場合のextended
オプションが必要になりました。 READMEでは、次のように説明しています。
拡張オプションを使用すると、URLエンコードされたデータをクエリ文字列ライブラリ(falseの場合)またはqsライブラリ(trueの場合)で解析するかを選択できます。
[...]
デフォルトはtrueですが、デフォルトの使用は非推奨になりました。 qsとquerystringの違いを調べて、適切な設定を選択してください。
これに関する役立つ情報や具体的な情報は見つかりませんでした。非推奨の node-querystring のみが見つかりました。
このオプションは常に真である必要がありますか?
このメッセージの理由は、body-parser
が extended
のデフォルト値をtrue
からfalse
に変更しようとしている であるためです。
拡張プロトコルは qs
library を使用してx-www-form-urlencoded
データを解析します。 qs
の主な利点は、非常に強力なシリアル化/逆シリアル化アルゴリズムを使用し、jsonのようなデータ構造をシリアル化できることです。
ただし、x-www-form-urlencoded
はフラットなhtmlフォームをシリアル化するように設計されているため、Webブラウザは通常このプロトコルを使用しません。ただし、ajax
を使用して豊富なデータ構造を送信する場合に便利です。
querystring
library` は、基本的なシリアル化/逆シリアル化アルゴリズムを提供します。これは、すべてのWebブラウザがフォームデータをシリアル化するために使用するものです。この基本的なアルゴリズムは、拡張されたアルゴリズムよりも大幅に単純ですが、フラットなデータ構造に限定されています。
どちらのアルゴリズムも、フラットデータでまったく同じように機能します。
さて、両方のアルゴリズムの長所と短所を知っているときは、どちらがアプリケーションに適しているかを決めるのはあなた次第です。