Expressのルーティングでパラメータを取得する方法

Expressroute メソッドでパラメータを取得する方法の覚え書き。

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);
このエントリーをはてなブックマークに追加
にほんブログ村 IT技術ブログへ

コメント

メールアドレスが公開されることはありません。 が付いている欄は必須項目です