2022年3月25日 Node.js Express ルーティング
ルーティングとは
リクエストに対して処理の振り分けを行う仕組みの事です。
expressの基本機能です。
ルーティングの実装
app.
関数名
METHOD ⇨ リクエストメソッド(get, post, put, deleteなど)
path ⇨ 振り分けたいURL
callback ⇨ pathマッチした時の処理
GETメソッドで /home/indexにアクセスするには
const express = require("express"); const app = express(); app get("/home/index", (req, res, next) => { res.status(200).send("OK"); }); app.listen(3000);
- ミドルウェアと似ていますが
next()
がいらなく、responseに対して何かを返す必要があります。 - sendメソッドでOKという文字列を返しています。
ルーティングのモジュール化
ある程度の機能単位でモジュール化する実装方法
express.Router()を使ってモジュール化します。
モジュール化した先のファイル
const router = require("express").Router(); router.get("/index", (req, res, next) => { res.status(200).send("OK"); }); module.exports = router;
読み込みファイル
const express = require("express"); const app = express(); app use("/index", require("./routes/index.js"); app.listen(3000);
- useメソッドの第二引数でモジュールでエクスポートしたものを受け取っています。
パスパラメータ
サーバー側にデータを渡す方法です。
- urlのパスの中に変数を埋め込みます。
- http://localhost3000/shops/123だとしたら123がパスパラメータに当たります。(ID)
const express = require("express"); const app = express(); app.get("/shops/:id, (req, res, next) => { res.status(200).send(req.params.id); }); app.listen(3000);
- getメソッド第一引数でパスパラメータを
<PARAM_NAME>
で指定します。 - 取得されたパラメータは
req.params
から変数として取り出します。 - 取り出す変数名は
/shops/:id
の:パラメータ名
で取得可能です。
node expressで使えるHTMLのテンプレートエンジンについて
- HTMLの雛形に対して動的に値やHTMLタグを埋め込む仕組みです。
- HTMLの雛形に動的なデータを埋め込んでHTMLを返します。
ejs
種類は他にもあり記法が変わります。
私はRailsのerbをよく使っていたので記法はejsが直感的だったのでejsを使います。
<body> <h1><%= title %></h1> </body>
こういった記法を用います。
基本構文
種類
値出力(エスケープ)
基本これを使います。XXS対策にもなります。
<%= %>
値出力(アンエスケープ)
インクルードの時のみ使用
<%- %>
コード実行
<% %>
コメント
<%# %>
インクルードとは
テンプレートの中にテンプレートを読み込ませる仕組みです。
<%- include(path [, locals]) %>
引数
- path インクルードしたいテンプレートのファイルパス
- locals インクルードするテンプレートに引き渡すデータ
戻り値
- 生成されたHTML