とあるWeb屋の備忘録

とあるWeb屋の備忘録。たまに雑記。

Node.jsを触ってみた話3

Node.jsを触ってみた話3

Node.jsを触ってみた話2の続き。

前回やったこと
・Expressとは
・Expressを使わないルーティングの書き方
・Expressを使ったルーティングの書き方

今回もまたルーティングに関する話なんだけど、ミドルウェアについても一緒に書きます。
あと調べているとExpressのルーティングに関して基本の書き方と一般的な書き方の2種類があったのでソースも例であげときます。

Expressはルーティングとミドルウェアが大事!!

ルーティングの役割

外部からくるHTTPリクエストに対して内部ロジックをマッピングすること。
ロジックっていうのはプログラムの処理内容や手順のこと。

ミドルウェアの役割

ルーティングの過程で何らかの処理を差し込むこと。
例えば認証やエラーハンドリングなど。

これらをわかりやすくいうと、クライアントからリクエストがきたときにURIとHTTPメソッドの組み合わせによって処理を振り分けるのがルーティングで、行う処理がミドルウェアのこと。
例えばDB検索を行って結果を返したり、テンプレートを出力する、とか。色んな処理書ける。

そして処理1つ1つがミドルウェアってことになる。
ちなみにミドルウェアサードパーティのやつも使える!!

※公式ドキュメントではリクエスURIを「マウントポイント」、そのリクエストにミドルウェアを適用することを「マウントする」といっている。

ミドルウェアについてもう少し書きたいけど長くなりそうなのでそれは次回書きます。
具体的にはミドルウェアを連結させることができるのでそのやり方。(このパスからのリクエストの場合はこの処理→次の処理→最後の処理、みたいな。)

Expressを使った基本的なルーティング方法

以下のように書きます。
getの例

var express = require('express'); //Express-generatorで勝手に書かれてる
var app = express();//Express-generatorで勝手に書かれてる

app.get('/', (req, res) => {
    //ここに処理を書きます
})

上の例では、HTTPリクエストとマウントポイントとルート・ハンドラ(ミドルウェアのように動作するコールバック関数!)をマッピングしているよ。



Expressを使った一般的なルーティング方法

一般的にはルーティング用のミドルウェアモジュールを作って、それをマウントポイントにマウントする。

routingをモジュール化(router.js)。要はこれがミドルウェアってことになる。

var express = require('express'); //Express-generatorで勝手に書かれてる
var router = express.Router(); //Express-generatorで勝手に書かれてる

router.get('/', (req, res) => {
    //ここに処理を書きます
});

module.exports = router;

次に上で作ったモジュールを利用する。(app.js)

var router = require('./router');
・
・
・
app.use('/', router); 

これで作成したモジュールをapp.jsでマウントポイントにマウントできた!
前回と一部内容が被った感があるけどExpressを使ったルーティング方法の比較でした。

こちらを参考にさせていただきました!
Express + Node.jsで基本を理解した次の一歩 - ディレクトリ構成をルーティング・ミドルウェアを理解して考えてみる
express実践入門