りゅうじの学習blog

学習したことをアウトプットしていきます。

2022年3月25日 Node.js Express ルーティング

ルーティングとは

リクエストに対して処理の振り分けを行う仕組みの事です。

expressの基本機能です。

ルーティングの実装

app.(path, callback)

関数名

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

参考

Udemy Node.js + Express + MySQL で作る 安全な Webアプリケーション 実践