Nestjs基础入门教程手把手教你创建RESTful API
刚接触Nestjs,按照教程创建RESTful API时遇到几个问题:
- 为什么我的控制器@Get()装饰器无法正确响应GET请求?
- 如何优雅地处理POST请求的DTO数据验证?
- 服务层和控制器层之间应该怎样传递数据才符合最佳实践?
- Nestjs的模块化设计在实际项目中应该如何组织目录结构?
- 为什么我的providers在跨模块使用时出现依赖注入失败?
- 能否用简单示例说明中间件在RESTful API中的实际应用场景?
3 回复
- 安装Node.js和Nest CLI:全局安装Nest CLI工具
npm install -g @nestjs/cli
。 - 创建项目:运行
nest new project-name
。 - 启动项目:使用
npm run start:dev
启动开发服务器。 - 创建模块:执行
nest generate module app
生成模块。 - 创建服务:通过
nest generate service app
创建业务逻辑服务。 - 创建控制器:运行
nest generate controller app
构建REST接口。 - 编写API:在控制器中定义路由方法如
@Get()
,@Post()
等。 - 操作数据:调用服务处理数据库操作或逻辑计算。
- 测试API:使用Postman或cURL测试接口。
- 配置环境:编辑
.env
文件管理不同环境配置。 - 使用装饰器:如
@Body()
,@Param()
等获取请求数据。 - 启动生产:优化性能后部署到服务器。
以上步骤涵盖从零搭建NestJS项目的完整流程,帮助快速掌握构建RESTful API的基础知识。
NestJS 基础入门:创建RESTful API
1. 安装与创建项目
首先确保已安装Node.js,然后安装Nest CLI:
npm i -g @nestjs/cli
nest new project-name
2. 项目结构介绍
主要目录:
src/
- 核心代码main.ts
- 应用入口app.module.ts
- 根模块app.controller.ts
- 示例控制器app.service.ts
- 示例服务
3. 创建RESTful API
生成资源
nest generate resource users
这将创建完整的CRUD结构(控制器、服务、模块等)
示例控制器
// users.controller.ts
import { Controller, Get, Post, Body, Param } from '@nestjs/common';
import { UsersService } from './users.service';
import { CreateUserDto } from './dto/create-user.dto';
@Controller('users')
export class UsersController {
constructor(private readonly usersService: UsersService) {}
@Post()
create(@Body() createUserDto: 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';
import { CreateUserDto } from './dto/create-user.dto';
@Injectable()
export class UsersService {
private users = [];
create(createUserDto: CreateUserDto) {
this.users.push(createUserDto);
return createUserDto;
}
findAll() {
return this.users;
}
findOne(id: number) {
return this.users[id];
}
}
DTO (数据传输对象)
// create-user.dto.ts
export class CreateUserDto {
readonly name: string;
readonly email: string;
readonly age: number;
}
4. 运行项目
npm run start:dev
现在你可以访问:
- GET
/users
- 获取所有用户 - POST
/users
- 创建新用户 - GET
/users/1
- 获取ID为1的用户
NestJS会自动将响应转换为JSON格式。