Dev Study
NestJS コース

5. リクエストボディと @Body

POST や PUT で送られてくる JSON ボディは、ハンドラの引数に @Body() を付けて受け取ります。NestJS が JSON のパースを済ませてくれるので、引数にはオブジェクトがそのまま入ってきます。

実務では「リソースの新規作成は @Post + @Body」「更新は @Put / @Patch + @Body」が定番の組み合わせです。@Body("name") のようにキー名を渡すと、ボディの特定のプロパティだけを取り出すこともできます。

注意点として、この時点ではボディの中身は無検証です。クライアントがどんな形の JSON を送ってきてもそのまま入ってくるため、型注釈を書いても実行時には何も保証されません。検証の仕組みは後のレッスンで学びます。

サンプルコード(フレームワーク環境が必要なため表示のみ)

import { Body, Controller, Post } from "@nestjs/common";

@Controller("users")
export class UsersController {
  @Post() // POST /users
  create(@Body() body: { name: string; age: number }) {
    // 送られた JSON がパース済みオブジェクトとして入る
    return { created: true, user: body };
  }

  @Post("nickname")
  updateNickname(@Body("nickname") nickname: string) {
    // キー名を渡すと特定のプロパティだけ取り出せる
    return { nickname };
  }
}
公式ドキュメントで詳しく ↗