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実践入門