Controller 是 NestJS 的入口层。
// 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);
}
}对应机场类比:
FlightsController
├── GET /flights -> 查询全部航班
├── GET /flights/:id -> 查询某个航班
└── POST /flights -> 新建航班Controller 的职责非常克制:
- 接 HTTP 请求
- 取路径参数、查询参数、请求体
- 调用 service
- 返回结果
它不应该承担的事:
- 写复杂业务规则
- 直接写数据库逻辑
- 拼一堆权限判断
- 到处 try/catch
- 混合一大堆转换逻辑
一句话:
Controller 是柜台,不是总调度室。