Node.js Expressでパスパラメータの取得方法
http://localhost:5000/sample/123
でパスパラメータの123
を取得したい場合"/sample/:id"
でエンドポイントを定義しreq.params.id
で取得できる。また123
は文字列なのでabc
,1b3
なども取得できる。ただし/sample/123/abc
のように更に追加された場合はエラーとなる。
コード例
const express = require("express"); const app = express(); const PORT = process.env.PORT || 5000; app.get("/sample/:id", (req, res) => { res.json(req.params.id); }); app.listen(PORT, () => { console.log(`Listening *: ${PORT}`); });
id?
/sample/:id
と違い名前付きオプションとなりhttp://localhost:5000/sample
,http://localhost:5000/sample/
も追加でundefinedで取得できる。
const express = require("express"); const app = express(); const PORT = process.env.PORT || 5000; app.get("/sample/:id?", (req, res) => { res.json(req.params.id); }); app.listen(PORT, () => { console.log(`Listening *: ${PORT}`); });
id*
"/sample/:id"
に加えて/sample/123/abc
のように更に追加されたケースでも取得できる(この場合は123が取得される)
const express = require("express"); const app = express(); const PORT = process.env.PORT || 5000; app.get("/sample/:id*", (req, res) => { res.json(req.params.id); }); app.listen(PORT, () => { console.log(`Listening *: ${PORT}`); });
正規表現
"/sample/:id(\\d+)"
で数字のみ許可できる
const express = require("express"); const app = express(); const PORT = process.env.PORT || 5000; app.get("/sample/:id(\\d+)", (req, res) => { res.json(req.params.id); }); app.listen(PORT, () => { console.log(`Listening *: ${PORT}`); });