Nestjs新手入门指南,一步步搭建自己的API
作为一个Nestjs新手,按照入门指南搭建API时遇到几个问题:
- 安装Nest CLI后初始化项目总是失败,提示依赖冲突,该如何解决?
- 控制器(Controller)和提供者(Provider)的区别是什么?能否用实际代码例子说明?
- 为什么我的@Get()路由无法访问?中间件配置有什么特别注意事项吗?
- 使用TypeORM连接数据库时,实体(Entity)文件应该放在哪个目录更规范?
- 有没有推荐的生产环境部署方案?比如Docker配置或PM2优化技巧?
首先安装Node.js和npm。接着创建项目文件夹并初始化npm init -y。
- 安装Nest CLI:
npm install -g @nestjs/cli。 - 创建新项目:
nest new project-name。 - 进入项目目录,安装必要的依赖包如TypeORM、Postgres等:
npm install @nestjs/typeorm typeorm pg. - 配置
app.module.ts添加TypeORM模块,并设置数据库连接。
接下来是API的构建:
5. 创建模块:nest generate module users。
6. 生成控制器和服务:nest generate controller users 和 nest generate service users。
7. 在users.service.ts中编写业务逻辑,在users.controller.ts中定义路由。
8. 使用装饰器如@Controller、@Get()来定义接口。
运行服务:npm run start:dev,测试API可用Postman或curl命令。记得配置好环境变量和错误处理,保证代码健壮性。最后不要忘记单元测试,用jest可以快速开始。
首先安装Node.js和Nest CLI工具。全局安装Nest CLI:npm i -g @nestjs/cli。创建项目:nest new project-name。选择TS或JS。
启动项目:npm run start:dev,访问http://localhost:3000确认正常。创建模块:nest generate module app,再生成控制器nest g controller user和服务nest g service user。
编辑users.controller.ts定义接口:如@Get()获取用户列表,@Post()新增用户。在users.service.ts实现业务逻辑。记得注入服务到控制器:constructor(private usersService: UsersService) {}。
配置app.module.ts引入模块。测试API可用性,可以使用Postman或cURL。最后,部署到服务器,比如PM2管理进程:pm2 start dist/main.js --name "my-api"。
NestJS新手入门指南
第一步:安装和初始化
首先确保你已经安装了Node.js(建议14.x及以上版本),然后全局安装Nest CLI:
npm i -g @nestjs/cli
nest new project-name
第二步:项目结构了解
一个新创建的NestJS项目主要包含以下核心文件:
src/main.ts- 应用入口文件src/app.module.ts- 根模块src/app.controller.ts- 基础控制器src/app.service.ts- 基础服务
第三步:创建你的第一个API
- 生成一个新的资源:
nest generate resource users
- 这会创建完整的CRUD结构:
users.module.ts- 用户模块users.controller.ts- 用户控制器users.service.ts- 用户服务dto文件夹 - 数据传输对象
第四步:编写基础API
在users.controller.ts中添加一个简单GET端点:
import { Controller, Get } from '@nestjs/common';
@Controller('users')
export class UsersController {
@Get()
findAll() {
return 'This action returns all users';
}
}
第五步:运行和测试
启动开发服务器:
npm run start:dev
访问 http://localhost:3000/users 应该能看到返回的文本。
第六步:进阶功能
- 使用DTO验证输入:
import { IsString, IsEmail } from 'class-validator';
export class CreateUserDto {
@IsString()
name: string;
@IsEmail()
email: string;
}
- 连接数据库: 安装TypeORM和数据库驱动(以PostgreSQL为例):
npm install @nestjs/typeorm typeorm pg
NestJS提供了完整的模块化架构和依赖注入系统,让API开发变得更加结构化。

