← NestJS コース
4. ルートパラメータと @Param
GET /users/123 のように URL の一部が可変になる場合は、@Get(":id") とコロン付きでパスを宣言します。ハンドラの引数に @Param("id") を付けると、その位置の値を受け取れます。
実務では「ID を指定して1件取得・更新・削除する」エンドポイントで毎回使う、最頻出のデコレータです。:id と @Param("id") の名前を一致させる、というルールだけ覚えれば書けます。
つまずきポイントは型です。URL から取れる値は常に string なので、@Param("id") id: number と書いても数値にはなりません。数値への変換は後のレッスンで学ぶ仕組みで行うため、ここでは「@Param は文字列で受け取る」と覚えておきましょう。
サンプルコード(フレームワーク環境が必要なため表示のみ)
import { Controller, Get, Param } from "@nestjs/common";
@Controller("users")
export class UsersController {
@Get(":id") // GET /users/123 のような URL
findOne(@Param("id") id: string) {
// id には "123" が入る(常に string)
return { id, name: "Alice" };
}
@Get(":id/posts/:postId") // パラメータは複数置ける
findPost(
@Param("id") id: string,
@Param("postId") postId: string,
) {
return { id, postId };
}
}