Nestjs基础入门教程一步步搭建你的第一个API
我刚接触Nestjs框架,按照入门教程一步步搭建第一个API时遇到几个问题:
- 安装完Nest CLI后创建新项目时报错,提示依赖冲突该怎么解决?
- 控制器(Controller)和提供者(Provider)的区别不是很清楚,能否用实际API例子说明?
- 为什么我的@Get()路由配置不生效,访问总是404?
- 如何在Nestjs中连接MySQL数据库,官方文档的TypeORM部分看不太懂?
- 有没有更简单的方法验证API接口,不想每次都启动整个服务?
-
安装Node.js和npm:首先确保电脑上安装了Node.js和npm。
-
创建项目:
mkdir nest-tutorial && cd $_ npm install -g [@nestjs](/user/nestjs)/cli nest new project-name
-
启动开发服务器:
npm run start:dev
-
创建模块和控制器:
nest generate module cats nest generate controller cats
-
编写控制器逻辑: 在
cats.controller.ts
中定义路由和处理函数。import { Controller, Get } from '[@nestjs](/user/nestjs)/common'; [@Controller](/user/Controller)('cats') export class CatsController { @Get() findAll(): string { return 'This action returns all cats'; } }
-
运行测试:访问
http://localhost:3000/cats
,应显示"This action returns all cats"。 -
添加服务(可选):生成服务文件并实现业务逻辑。
-
部署:使用PM2或其他工具部署到生产环境。
以上步骤帮助你快速构建一个简单的API。继续深入学习可以了解依赖注入、装饰器等高级特性。
首先安装Node.js和NestJS CLI。创建项目:nestjs new project-name
。进入项目目录后,初始化数据库连接(如TypeORM),安装相关依赖。
接着创建模块和服务:nestjs generate module cats
和 nestjs generate service cats
。在cats.service.ts
中实现基本的CRUD逻辑。
配置路由,在cats.controller.ts
中定义接口,比如@Get()
、@Post()
等装饰器绑定方法。记得在模块文件中导出控制器和服务。
运行开发服务器:npm run start:dev
,访问接口测试功能。最后别忘了在main.ts
中引入并加载模块。
这个过程涵盖了从环境搭建到API构建的基础流程,建议多查阅官方文档理解装饰器和依赖注入机制。
NestJS基础入门:一步步搭建你的第一个API
准备工作
- 确保已安装Node.js (建议v16+)
- 运行
npm i -g @nestjs/cli
安装Nest CLI工具
创建新项目
nest new first-api
cd first-api
项目结构
src/
- 主要源代码目录main.ts
- 应用入口文件app.module.ts
- 根模块app.controller.ts
- 示例控制器app.service.ts
- 示例服务
创建第一个API
- 生成资源
nest generate resource items
选择REST API风格
- 编辑生成的DTO
// src/items/dto/create-item.dto.ts
export class CreateItemDto {
readonly name: string;
readonly description?: string;
}
- 编辑服务
// src/items/items.service.ts
@Injectable()
export class ItemsService {
private items: CreateItemDto[] = [];
findAll(): CreateItemDto[] {
return this.items;
}
create(item: CreateItemDto): CreateItemDto {
this.items.push(item);
return item;
}
}
- 编辑控制器
// src/items/items.controller.ts
@Controller('items')
export class ItemsController {
constructor(private readonly itemsService: ItemsService) {}
@Get()
findAll() {
return this.itemsService.findAll();
}
@Post()
create(@Body() createItemDto: CreateItemDto) {
return this.itemsService.create(createItemDto);
}
}
运行应用
npm run start:dev
测试API
- GET
/items
- 获取所有项目 - POST
/items
- 创建新项目(使用Postman或curl)
下一步学习建议
- 添加数据库连接(TypeORM或Prisma)
- 实现认证和授权
- 学习中间件和拦截器
- 探索微服务功能
希望这个基础教程能帮助你开始NestJS之旅!