Nestjs基础入门,从零开始构建RESTful API

我正在学习NestJS框架,想从零开始构建一个RESTful API,但遇到了一些困惑:

  1. 如何正确安装和配置NestJS的开发环境?需要哪些基础工具和依赖?
  2. NestJS的核心概念(如模块、控制器、服务)具体该如何使用?能否结合RESTful API的例子说明?
  3. 在构建API时,如何设计路由、处理请求参数(如路径参数、查询参数)和返回响应?
  4. 如何连接数据库(比如MySQL或MongoDB)并进行基本的CRUD操作?
  5. 有没有推荐的中间件或管道(Pipe)来处理数据验证和转换?
  6. 部署NestJS项目时需要注意哪些关键配置?比如环境变量、生产模式优化等。

希望有经验的前辈能分享一下入门经验和常见问题的解决方案,谢谢!


3 回复

好的!首先确保安装了Node.js和npm。接着创建项目:mkdir nest-api && cd $_,然后初始化:npm init -y

安装NestJS CLI:npm i -g @nestjs/cli。生成新项目:nest new api,选择TS。

进入项目目录,运行开发服务器:npm run start:dev,访问http://localhost:3000确认启动成功。

创建模块:nest generate module cats,再生成控制器和服务:nest generate controller cats --no-specnest generate service cats --no-spec

编辑cats.controller.ts定义路由,如@Get()获取所有猫。在cats.service.ts实现逻辑。记得在app.module.ts导入模块。

最后测试API,可以用Postman或curl,例如:curl http://localhost:3000/cats。这就是一个简单的RESTful API雏形。后续可以添加实体、数据库等高级功能。


首先安装Node.js和NestJS CLI工具。使用nestjs new project-name创建项目。API基本结构包括Controller、Service和Module。

  1. 初始化项目:运行npm install
  2. 创建模块:使用nestjs generate module users生成users模块。
  3. 创建控制器:运行nestjs generate controller users,定义路由如GET /usersPOST /users
  4. 创建服务:执行nestjs generate service users,处理业务逻辑,比如从数据库获取用户数据。
  5. 定义实体:可以使用TypeORM或Mongoose,通过generate entity创建数据模型。
  6. 配置依赖注入:在服务中注入Repository,操作数据库。
  7. 测试API:启动应用npm run start:dev,用Postman测试接口。

示例代码:

// users.controller.ts
import { Controller, Get, Post, Body } from '@nestjs/common';
import { UsersService } from './users.service';

@Controller('users')
export class UsersController {
  constructor(private readonly usersService: UsersService) {}

  @Get()
  findAll() {
    return this.usersService.findAll();
  }

  @Post()
  create(@Body() createUserDto: any) {
    return this.usersService.create(createUserDto);
  }
}

// users.service.ts
import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { User } from './entities/user.entity';

@Injectable()
export class UsersService {
  constructor(
    @InjectRepository(User)
    private usersRepository: Repository<User>,
  ) {}

  async findAll(): Promise<User[]> {
    return this.usersRepository.find();
  }

  async create(user: any): Promise<User> {
    const createdUser = this.usersRepository.create(user);
    return this.usersRepository.save(createdUser);
  }
}

NestJS 基础入门:构建RESTful API

NestJS 是一个用于构建高效、可扩展的 Node.js 服务器端应用程序的框架。它使用渐进式 JavaScript,内置 TypeScript 支持。

1. 安装与初始化

首先确保已安装 Node.js,然后全局安装 Nest CLI:

npm i -g @nestjs/cli
nest new project-name
cd project-name
npm run start:dev

2. 基本概念

NestJS 核心概念包括:

  • 控制器(Controllers):处理 HTTP 请求
  • 服务(Providers):业务逻辑
  • 模块(Modules):组织代码

3. 创建RESTful API

创建资源模块

nest generate resource users

用户控制器示例

// users.controller.ts
import { Controller, Get, Post, Body, Param } from '@nestjs/common';
import { UsersService } from './users.service';

@Controller('users')
export class UsersController {
  constructor(private readonly usersService: UsersService) {}

  @Post()
  create(@Body() createUserDto) {
    return this.usersService.create(createUserDto);
  }

  @Get()
  findAll() {
    return this.usersService.findAll();
  }

  @Get(':id')
  findOne(@Param('id') id: string) {
    return this.usersService.findOne(+id);
  }
}

用户服务示例

// users.service.ts
import { Injectable } from '@nestjs/common';

@Injectable()
export class UsersService {
  private users = [];

  create(user) {
    this.users.push(user);
    return user;
  }

  findAll() {
    return this.users;
  }

  findOne(id: number) {
    return this.users.find(user => user.id === id);
  }
}

4. 数据验证

安装 class-validator 和 class-transformer:

npm install class-validator class-transformer

创建 DTO (Data Transfer Object):

// create-user.dto.ts
import { IsEmail, IsNotEmpty } from 'class-validator';

export class CreateUserDto {
  @IsNotEmpty()
  name: string;

  @IsEmail()
  email: string;
}

5. 运行与测试

启动开发服务器:

npm run start:dev

使用 Postman 或 curl 测试 API:

curl -X POST http://localhost:3000/users -H "Content-Type: application/json" -d '{"name":"John","email":"john@example.com"}'

这就是 NestJS 构建 RESTful API 的基础流程。NestJS 还支持更多高级功能如中间件、守卫、拦截器、管道等。

回到顶部