Expressのルーティングでパラメータを取得する方法
Expressのroute メソッドでパラメータを取得する方法の覚え書き。
GETメソッド
app.get('/エンドポイント', (request, response) => {
});
パラメータはrequest.query
に格納されています。
分割代入
変数名はパラメータ名と同じにしなければなりません。
const { modulename } = request.query;
プロパティアクセサーを使った代入
好きな変数名に代入できます。
ドット表記法
const name = request.query.modulename;
ブラケット表記法
const name = request.query["modulename"];
パラメータ名にハイフンが付いている場合はブラケット表記法を使用します。
const userId = request.query["user-id"];
クエリーを一括でオブジェクトに代入してから参照する
const query = request.query;
// 下記のように各パラメータにアクセスする.
query.modulename
パスパラメータ
パスパラメータは、URLのパスに含まれる動的な値を取得するための仕組みです。
パスパラメータはエンドポイントに「コロン(:
)パラメータ名」で指定します。
app.get('/view/:パラメータ名', (request, response) => {
});
値はrequest.params.パラメータ名
で取得します。
サンプル
app.get('/view/:userid', (request, response) => {
let userId = request.params.userid;
});
基本的にパスパラメータはエンドポイントの一部なので省略できません。省略可能(オプショナル)とする場合は、パスパラメータの後に?
を追加します。
app.get('/view/:パラメータ?', (request, response) => {
});
サンプル
app.get('/view/:userid?', (request, response) => {
});
省略した場合は、パラメータにはundefined
が設定されます。
POSTメソッド
app.post('/エンドポイント', (request, response) => {
});
パラメータはrequest.body
に格納されています。
まず、POSTでデータを受け取るために次の記述が必要です。
const express = require('express');
const app = express();
app.use(express.urlencoded({ extended: true }));
分割代入
変数名はパラメータ名と同じにしなければなりません。
const { modulename } = request.body;
プロパティアクセサーを使った代入
好きな変数名に代入できます。
ドット表記法
const name = request.body.modulename;
ブラケット表記法
const name = request.body["modulename"];
パラメータ名にハイフンが付いている場合はブラケット表記法を使用します。
const userId = request.body["user-id"];
JSONを受け取る場合
request.body
がJSONデータになります。
まず、POSTでJSONデータを受け取るために次のような記述が必要です。
const express = require('express');
const app = express();
app.use(express.json({ limit: '10mb' }));
JSONオブジェクトとして使用
const json = request.body;
JSON文字列として使用
const jsonStr = JSON.stringify(request.body);