app.use(express)についてイメージだけつかむ
例 マンションの受付
あなたのウェブアプリケーションを、たくさんの部屋がある大きなマンションだと想像してください。
そして、ウェブサイトにアクセスしてくる人たちは、そのマンションにやってくる訪問者です。
app.use は、このマンションの受付のようなものです。
すべての訪問者は必ず受付を通る:
ウェブサイトのどのページにアクセスしようとしても、
まずは app.use で設定された「受付」を通ります。
受付で色々なことができる
受付では、訪問者の名前を記録したり(ログ)、
訪問者が誰なのかを確認したり(認証)、
訪問者を特定の部屋に案内したり(ルーティング)、
場合によっては立ち入りを禁止したり(エラー処理)することができます。
複数の受付を置ける
必要に応じて、複数の「受付」を置くことができます。
例えば、時間帯によって違う受付を置いたり、特定の種類の訪問者だけが通る特別な受付を設けたりすることも可能です。
このように考えると、app.use は、あなたのウェブアプリケーションに入ってくるすべてのリクエスト(訪問者)に対して、何らかの処理を行うための「共通の入り口」のようなもの
この「受付」で行われる様々な処理のことを、専門用語で「ミドルウェア」と呼びます。
app.use は、このミドルウェアを設定するために使うもの
リクエストボディを解析するミドルウェアを追加
// リクエストボディを解析するミドルウェアを追加
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
前の例え話でいうと、マンションの受付係が、訪問者が持ってきた「荷物」を理解できるようにするための設定です。
app.use(express.json());
これは、受付に「JSON形式の荷物」を理解するための特別な訓練を施すようなものです。
ウェブサイトやアプリから送られてくるデータの中には、JSONという形式で書かれたものがあります。
これは、JavaScriptのオブジェクトのような構造をしたデータの表現方法です。
この行を追加することで、あなたのウェブアプリケーションは、JSON形式で送られてきたデータの中身を自動的に解析して、プログラムの中で扱いやすい形にしてくれるようになります。
例えるなら、受付係が「JSON語」を理解できるようになり、JSON形式で書かれた手紙や書類の中身を読んで整理してくれるようなイメージです。
app.use(express.urlencoded({ extended: true }));
こちらは、主にウェブサイトのフォームから送信される「URLエンコードされた形式の荷物」を理解するための訓練です。
ウェブサイトの入力フォーム(例えば、名前やメールアドレスを入力する場所)から「送信」ボタンが押されると、データは通常この形式でサーバーに送られます。
extended: true
というオプションは、より複雑な形式のデータ(例えば、配列やオブジェクトがURLエンコードされたもの)も正しく解析できるようにするための設定です。
例えるなら、受付係が、ウェブサイトのフォームから送られてくる、ちょっと複雑な形式の伝票や書類もきちんと読み解いて整理してくれるようなイメージです。
URLエンコードとは
インターネット上でURL(Uniform Resource Locator、ウェブサイトのアドレスなど)に含めることができない文字や、特別な意味を持つ文字を、安全に送信できる形式に変換する処理のことです。
まとめ
JSON形式のデータ
ウェブサイトのフォームから送信されたデータ
の両方を正しく理解し、その内容をアプリケーションの内部で利用できるようになります。
これは、ウェブサイトとサーバーの間でデータのやり取りを行う上で非常に重要な設定となります。
Discussion