Nestjs基础入门教程一步步搭建你的第一个API

我刚接触Nestjs框架,按照入门教程一步步搭建第一个API时遇到几个问题:

  1. 安装完Nest CLI后创建新项目时报错,提示依赖冲突该怎么解决?
  2. 控制器(Controller)和提供者(Provider)的区别不是很清楚,能否用实际API例子说明?
  3. 为什么我的@Get()路由配置不生效,访问总是404?
  4. 如何在Nestjs中连接MySQL数据库,官方文档的TypeORM部分看不太懂?
  5. 有没有更简单的方法验证API接口,不想每次都启动整个服务?
3 回复
  1. 安装Node.js和npm:首先确保电脑上安装了Node.js和npm。

  2. 创建项目

    mkdir nest-tutorial && cd $_
    npm install -g [@nestjs](/user/nestjs)/cli
    nest new project-name
    
  3. 启动开发服务器

    npm run start:dev
    
  4. 创建模块和控制器

    nest generate module cats
    nest generate controller cats
    
  5. 编写控制器逻辑: 在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';
      }
    }
    
  6. 运行测试:访问http://localhost:3000/cats,应显示"This action returns all cats"。

  7. 添加服务(可选):生成服务文件并实现业务逻辑。

  8. 部署:使用PM2或其他工具部署到生产环境。

以上步骤帮助你快速构建一个简单的API。继续深入学习可以了解依赖注入、装饰器等高级特性。


首先安装Node.js和NestJS CLI。创建项目:nestjs new project-name。进入项目目录后,初始化数据库连接(如TypeORM),安装相关依赖。

接着创建模块和服务:nestjs generate module catsnestjs generate service cats。在cats.service.ts中实现基本的CRUD逻辑。

配置路由,在cats.controller.ts中定义接口,比如@Get()@Post()等装饰器绑定方法。记得在模块文件中导出控制器和服务。

运行开发服务器:npm run start:dev,访问接口测试功能。最后别忘了在main.ts中引入并加载模块。

这个过程涵盖了从环境搭建到API构建的基础流程,建议多查阅官方文档理解装饰器和依赖注入机制。

NestJS基础入门:一步步搭建你的第一个API

准备工作

  1. 确保已安装Node.js (建议v16+)
  2. 运行 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

  1. 生成资源
nest generate resource items

选择REST API风格

  1. 编辑生成的DTO
// src/items/dto/create-item.dto.ts
export class CreateItemDto {
  readonly name: string;
  readonly description?: string;
}
  1. 编辑服务
// 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;
  }
}
  1. 编辑控制器
// 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)

下一步学习建议

  1. 添加数据库连接(TypeORM或Prisma)
  2. 实现认证和授权
  3. 学习中间件和拦截器
  4. 探索微服务功能

希望这个基础教程能帮助你开始NestJS之旅!

回到顶部