Dev Study
NestJS コース

3. コントローラと @Get

コントローラは HTTP リクエストを最初に受け取る部品です。クラスに @Controller("users") を付けると /users 配下のパスを担当し、メソッドに @Get() を付けるとそのメソッドが GET リクエストの処理(ハンドラ)になります。POST なら @Post() のように、HTTP メソッドごとにデコレータが用意されています。

実務ではコントローラを「URL と処理の対応表」として薄く保つのが基本です。1つのリソース(users、orders など)につき1つのコントローラを作ると、どの URL がどのファイルで処理されるかが一目で分かります。

ハンドラの戻り値はオブジェクトを返すだけで自動的に JSON レスポンスになります。res.json() のような低レベル API を自分で呼ぶ必要はなく、むしろ呼ばないほうが NestJS の機能と相性が良いことを覚えておきましょう。

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

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

@Controller("users") // /users 配下を担当
export class UsersController {
  @Get() // GET /users
  findAll() {
    // オブジェクトを返すだけで JSON レスポンスになる
    return [{ id: 1, name: "Alice" }];
  }

  @Get("active") // GET /users/active(パスを継ぎ足せる)
  findActive() {
    return [{ id: 1, name: "Alice", active: true }];
  }
}
公式ドキュメントで詳しく ↗