【初心者向け】ExpressでURLパラメータを取得して処理を行う方法

2024-04-02

ExpressでURLパラメータを取得する方法

クエリパラメータ

URLの末尾に ? を付けて、パラメータ名と値のペアを key=value 形式で記述します。複数のパラメータを指定する場合は、& で区切ります。

例:

http://localhost:3000/users?id=123&name=山田太郎

この場合、以下のコードでパラメータを取得できます。

const express = require('express');
const app = express();

app.get('/users', (req, res) => {
  const id = req.query.id;
  const name = req.query.name;

  // パラメータを使って処理を行う
  console.log(`ID: ${id}, 名前: ${name}`);

  res.send('OK');
});

app.listen(3000);

パスパラメータ

URLのパスにパラメータを埋め込みます。コロン(:) を使ってパラメータ名と値を区切ります。

http://localhost:3000/users/123
const express = require('express');
const app = express();

app.get('/users/:id', (req, res) => {
  const id = req.params.id;

  // パラメータを使って処理を行う
  console.log(`ID: ${id}`);

  res.send('OK');
});

app.listen(3000);
  • クエリパラメータは、検索機能など、パラメータの数が可変の場合に適しています。

ExpressでURLパラメータを取得するには、req.query オブジェクトと req.params オブジェクトを使用します。どちらを使うべきかは、状況によって異なります。

  • 【Express】ルートパラメータの取得 - Zenn
  • Express でクエリ文字列のパラメータを受け取る方法 - Node.js 入門
  • nodeJS でURLからパラメータを渡す方法 - Qiita
  • 【Node.js + Express】リクエストからパラメーターを取得する - Daily Up



クエリパラメータ

const express = require('express');
const app = express();

app.get('/users', (req, res) => {
  const id = req.query.id;
  const name = req.query.name;

  // パラメータを使って処理を行う
  console.log(`ID: ${id}, 名前: ${name}`);

  res.send('OK');
});

app.listen(3000);
http://localhost:3000/users?id=123&name=山田太郎

パスパラメータ

const express = require('express');
const app = express();

app.get('/users/:id', (req, res) => {
  const id = req.params.id;

  // パラメータを使って処理を行う
  console.log(`ID: ${id}`);

  res.send('OK');
});

app.listen(3000);

このコードは、以下のURLでアクセスすると、id の値を出力します。

http://localhost:3000/users/123

複数のクエリパラメータを取得するには、req.query オブジェクトをループ処理します。

const express = require('express');
const app = express();

app.get('/users', (req, res) => {
  for (const key in req.query) {
    console.log(`${key}: ${req.query[key]}`);
  }

  res.send('OK');
});

app.listen(3000);
http://localhost:3000/users?id=123&name=山田太郎

デフォルト値

パラメータが存在しない場合にデフォルト値を設定するには、req.query.paramName || defaultValue のように記述します。

const express = require('express');
const app = express();

app.get('/users', (req, res) => {
  const id = req.query.id || 0;

  // パラメータを使って処理を行う
  console.log(`ID: ${id}`);

  res.send('OK');
});

app.listen(3000);
http://localhost:3000/users




URLパラメータを取得するその他の方法

req.body オブジェクト

リクエストボディにパラメータが含まれている場合は、req.body オブジェクトを使用して取得できます。

const express = require('express');
const app = express();

app.post('/users', (req, res) => {
  const id = req.body.id;
  const name = req.body.name;

  // パラメータを使って処理を行う
  console.log(`ID: ${id}, 名前: ${name}`);

  res.send('OK');
});

app.listen(3000);
POST /users HTTP/1.1
Content-Type: application/json

{
  "id": 123,
  "name": "山田太郎"
}

querystring モジュールを使用すると、クエリ文字列を解析してパラメータを取得できます。

const express = require('express');
const app = express();
const querystring = require('querystring');

app.get('/users', (req, res) => {
  const parsed = querystring.parse(req.url.split('?')[1]);
  const id = parsed.id;
  const name = parsed.name;

  // パラメータを使って処理を行う
  console.log(`ID: ${id}, 名前: ${name}`);

  res.send('OK');
});

app.listen(3000);
http://localhost:3000/users?id=123&name=山田太郎

URLのパースライブラリ

url-parse などのURLパースライブラリを使用すると、URLを解析してパラメータを取得できます。

const express = require('express');
const app = express();
const urlParse = require('url-parse');

app.get('/users', (req, res) => {
  const parsed = urlParse(req.url);
  const id = parsed.query.id;
  const name = parsed.query.name;

  // パラメータを使って処理を行う
  console.log(`ID: ${id}, 名前: ${name}`);

  res.send('OK');
});

app.listen(3000);
http://localhost:3000/users?id=123&name=山田太郎

javascript node.js express


空オブジェクト判定:for...inループ vs. Object.keys

Object. keys(obj).length === 0オブジェクトの所有するキーの数を取得し、それが0かどうかを判定する方法です。最も簡潔で汎用性の高い方法ですが、オブジェクトにhasOwnPropertyプロパティが追加されている場合、誤判定される可能性があります。...


改行で文字列を分割!JavaScriptとNode.jsのテクニック大公開

JavaScript と Node. js で文字列を改行 (\n) で分割するには、主に以下の2つの方法があります。String. prototype. split() メソッドを使う正規表現を使うそれぞれの特徴と使い方を以下で詳しく説明します。...


Node.js での package-lock.json の謎:なぜ npm install は書き換えるのか?

package-lock. json は npm install によって生成されるファイルです。このファイルには、インストールされたライブラリやモジュールの名前、バージョン、依存関係などが記録されています。npm install が package-lock...


Node.jsとnpmのバージョン不一致を解決!「npm WARN npm npm does not support Node.js v9.1.0」エラーメッセージの原因と対策

このエラーメッセージは、Node. jsのバージョンが古いことが原因で発生します。npmは、Node. jsの特定のバージョンでのみ動作するように設計されており、古いバージョンでは互換性がない場合があります。原因このエラーメッセージが表示される主な理由は2つあります。...


JavaScript、React、React Hooksにおける「Uncaught Error: Rendered fewer hooks than expected」エラー:詳細な解決策と予防策

原因このエラーは、React Hooks 関数 (useState、useEffect など) の呼び出し数が、前回のレンダリング時の呼び出し数よりも少ない場合に発生します。React Hooks は、コンポーネントの状態と副作用を管理するために使用される関数です。React は、これらのフックがレンダリング中にどの順序で呼び出されたかを追跡し、その情報を使用してコンポーネントの状態を更新します。...