駆け出しのエンジニア日記

プログラミング言語勉強中の奮闘日記

Expressのルーティング

そもそもルーティングとは・・・

アプリケーションが特定のエンドポイントに対するクライアント要求に応答する方法と

して、URI (またはパス) と特定の HTTP 要求メソッド (GET、POST など) を決定するこ

とです。

簡単に言うと、マッチするPATHを指定することでリクエストに応じた処理が可能になります。

 

Expressのルーティングの場合

 app.METHOD(PATH, HANDLER)

このように記述します。

・appはExpressのインスタンス

・METHODはHTTP 要求メソッド 

・PATHはサーバー上のパス

・HANDLERはルートが一致した際に実行される関数

の意味があります。

たとえば、GETリクエストを処理する場合はapp.get()

POSTリクエストを処理する場合はapp.postなどがあります。 

実際に書いてみましょう。

const express = require('express');
const app = express();
//ルーティング
app.get('/cats', (req, res) => {
res.send('にゃーーーーー');
})
app.post('/cats', (req, res) => {
res.send('/catsにPOSTリクエスト');
})
app.get('/dogs', (req, res) => {
res.send('ワンワンワンワン');
})
app.get('/', (req, res) => {
res.send('ホーム画面です');
})
app.get('*', (req, res) => {
res.send('そんなパスは不明');
})
app.listen(3000, () => {
console.log('リクエストをポート3000で待受中');
});

 

app.get('/cats', (req, res) => {
res.send('にゃーーーーー');
})

この部分のリクエストが通り、レスポンスが返ってきているのがいるのが確認とれます。

ちなみに、「 res.send( ) 」でレスポンスボディの設定が可能です。

send()にはHTTPレスポンスプロセスの終了処理が含まれるので、end()は不要となりまsす。

また、

app.get('*', (req, res) => {
res.send('そんなパスは不明');
})

PATH部分が「*(アスタリスク)」の時はなんでもマッチする意味になります。

Expressのルーティングは定義した順番にPATHのマッチングを見ていきます。

なので、一番最初に「*」にしてしまうと、全てのGETリクエストが「そんなパスは不明」になってしまうので、全部のルーティングの一番最後に記述する必要があります。