Nestjs新手入门指南,一步步搭建自己的API

作为一个Nestjs新手,按照入门指南搭建API时遇到几个问题:

  1. 安装Nest CLI后初始化项目总是失败,提示依赖冲突,该如何解决?
  2. 控制器(Controller)和提供者(Provider)的区别是什么?能否用实际代码例子说明?
  3. 为什么我的@Get()路由无法访问?中间件配置有什么特别注意事项吗?
  4. 使用TypeORM连接数据库时,实体(Entity)文件应该放在哪个目录更规范?
  5. 有没有推荐的生产环境部署方案?比如Docker配置或PM2优化技巧?
3 回复

首先安装Node.js和npm。接着创建项目文件夹并初始化npm init -y

  1. 安装Nest CLI:npm install -g @nestjs/cli
  2. 创建新项目:nest new project-name
  3. 进入项目目录,安装必要的依赖包如TypeORM、Postgres等:npm install @nestjs/typeorm typeorm pg.
  4. 配置app.module.ts添加TypeORM模块,并设置数据库连接。

接下来是API的构建: 5. 创建模块:nest generate module users。 6. 生成控制器和服务:nest generate controller usersnest 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

  1. 生成一个新的资源:
nest generate resource users
  1. 这会创建完整的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 应该能看到返回的文本。

第六步:进阶功能

  1. 使用DTO验证输入:
import { IsString, IsEmail } from 'class-validator';

export class CreateUserDto {
  @IsString()
  name: string;
  
  @IsEmail()
  email: string;
}
  1. 连接数据库: 安装TypeORM和数据库驱动(以PostgreSQL为例):
npm install @nestjs/typeorm typeorm pg

NestJS提供了完整的模块化架构和依赖注入系统,让API开发变得更加结构化。

回到顶部