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