2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

expressのミドルウェアとルートハンドラ

Posted at

ミドルウェアとルートハンドラ

expressにはミドルウェアとルートハンドラというものがある。

ルートハンドラとは下図のget,postなどに紐づく関数のこと。

function(){}のこと。(レスポンスを返すメイン処理。)

Untitleda.png

対してミドルウェアとはルートハンドラの前後に行われる処理。

基本はuseを使い、その中でミドルウェアに当たるfunctionを定義する。

例えば下図だったら、”/”に対してpostやgetが送られてきたら

postやgetの処理に行く前、後に行う処理を書く。(データの処理。jsonとか)

Untitleds.png

流れは

request→middleware→route handler

ミドルウェアは第三引数にnextというのがあり、次のミドルウェアを指定できる。

ルートハンドラにもnextを定義できる。

(nextで例外処理を呼び出したりする。)

nextを呼ばないと次の処理に行かない。

例えば下図は”/”に対してget処理を投げたときコンソールログを出す処理。

上から順番に処理されるので

最初のミドルウェアでコンソールにmiddle oneが記述され

ミドルウェアにnextがあるので次のmiddle twoが処理。

(nextがない場合、middle oneで終わる。handdler処理もされない。)

次のミドルウェアにもnextがあるのでget処理の場合getのhanddlerが実行される。

ルートハンドラ内にはnextを記述していないので以降の処理はされない。

Untitled.png

ミドルウェアとルートハンドラで挙動は変わらないが、処理するタイミングと

役割が異なる。

getとuseはパス指定や関数を呼び出すところは同じだが

違いとしてパスの判別が異なる。

useは前方一致。getは完全一致。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?