全书目录

第七篇:NestJS 完全指南 —— 国际机场总调度宇宙

第五章:Controller —— 柜台只负责接待,不负责开飞机

1 分钟 182 字 第 185 / 962 个阅读单元

Controller 是 NestJS 的入口层。

ts
// src/flights/flights.controller.ts
import { Controller, Get, Param, Post, Body } from '@nestjs/common';
import { FlightsService } from './flights.service';
import { CreateFlightDto } from './dto/create-flight.dto';

@Controller('flights')
export class FlightsController {
  constructor(private readonly flightsService: FlightsService) {}

  @Get()
  findAll() {
    return this.flightsService.findAll();
  }

  @Get(':id')
  findOne(@Param('id') id: string) {
    return this.flightsService.findOne(id);
  }

  @Post()
  create(@Body() dto: CreateFlightDto) {
    return this.flightsService.create(dto);
  }
}

对应机场类比:

text
FlightsController
├── GET /flights       -> 查询全部航班
├── GET /flights/:id   -> 查询某个航班
└── POST /flights      -> 新建航班

Controller 的职责非常克制:

  • 接 HTTP 请求
  • 取路径参数、查询参数、请求体
  • 调用 service
  • 返回结果

不应该承担的事:

  • 写复杂业务规则
  • 直接写数据库逻辑
  • 拼一堆权限判断
  • 到处 try/catch
  • 混合一大堆转换逻辑

一句话:

Controller 是柜台,不是总调度室。