很多人学 Nest.js,一上来就被装饰器、模块、依赖注入、管道、守卫、拦截器绕晕。结果项目结构还没搭好,热情已经消耗一半。
其实服务端开发的核心就四件事:
路由 → 参数 → 业务 → 数据。
Nest.js 只是用更工程化的方式,把这四件事组织起来。先用 20 行核心代码跑通一个能用的接口,再逐步加验证、数据库、鉴权和部署。
Nest.js 服务端 = 模块 + 控制器 + 服务 + 依赖注入 + 管道/守卫/拦截器。
先跑通模块、控制器、服务,其他都是按需叠加。
用 nest new server 创建项目后,核心代码就下面这些。省略 import,只看结构。
// notes.controller.ts
@Controller('notes')
export class NotesController {
constructor(private readonly notes: NotesService) {}
@Get()
findAll() { return this.notes.findAll(); }
@Get(':id')
findOne(@Param('id') id: string) { return this.notes.findOne(+id); }
@Post()
create(@Body() dto: { text: string }) { return this.notes.create(dto.text); }
// notes.service.ts
@Injectable()
export class NotesService {
private data = [{ id: 1, text: '第一条笔记' }];
findAll() { return this.data; }
findOne(id: number) { return this.data.find(n => n.id === id); }
create(text: string) {
const note = { id: Date.now(), text };
this.data.push(note);
return note;
}
}最后在模块里注册:
@Module({ controllers: [NotesController], providers: [NotesService] })
export class NotesModule {}启动后,你就有了三个接口:
GET /notes:查列表;GET /notes/:id:查单条;POST /notes:新增笔记。这就是 Nest.js 服务端的最小闭环。
npx @nestjs/cli new servernest g resource notes,自动生成 CRUD 骨架。class-validator 做参数校验。app.useGlobalPipes(new ValidationPipe())。一条命令生成完整 CRUD 骨架:
nest g resource notes框架的价值,就是让你少写重复代码,多写业务逻辑。
await,返回空数据。原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。