← 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 };
}
}