- Nest.js从零开始学习
- Nest.js概述
- 环境搭建
- 基本概念
- 依赖注入(Dependency Injection)
- 中间件与管道
- 路由与请求处理
- Nest.js 框架异常处理
- Nest.js 框架数据库操作
- Nest.js 框架认证与授权
- Nest.js 框架 WebSockets 与实时通信
- Nest.js 框架 GraphQL 支持
- Nest.js 框架微服务架构
- Nest.js 框架测试
- Nest.js 框架性能优化与安全
- Nest.js 项目实战:创建一个完整的用户管理应用
基本概念
class Controllers,Providers,ModulesNest.js的基本概念包括控制器(Controllers)、服务(Providers)和模块(Modules)。这三个部分共同构成了Nest.js应用的核心。
1. 控制器(Controllers)
作用:控制器负责处理客户端的请求,并将请求交给相应的服务进行处理。它们通常定义应用的路由和HTTP方法。
详细属性:
@Controller()
:用于定义控制器的装饰器,可以指定路由前缀。@Get()
、@Post()
、@Put()
、@Delete()
:用于定义HTTP请求方法的装饰器。
示例:
import { Controller, Get, Post, Body } from '@nestjs/common';
import { AppService } from './app.service';
@Controller('users')
export class UsersController {
constructor(private readonly appService: AppService) {}
@Get()
getAllUsers() {
return this.appService.getUsers();
}
@Post()
createUser(@Body() userDto: CreateUserDto) {
return this.appService.createUser(userDto);
}
}
2. 服务(Providers)
作用:服务是包含业务逻辑的类,可以被多个控制器或其他服务共享。它们通常用于处理数据和执行计算。
详细属性:
@Injectable()
:用于定义服务的装饰器,表示该类可以被Nest的依赖注入系统管理。
示例:
import { Injectable } from '@nestjs/common';
@Injectable()
export class AppService {
private users = [];
getUsers() {
return this.users;
}
createUser(userDto: CreateUserDto) {
this.users.push(userDto);
return userDto;
}
}
3. 模块(Modules)
作用:模块是Nest.js应用的基本构建块,用于组织代码。每个模块可以包含控制器、服务、管道、中间件等。
详细属性:
@Module()
:用于定义模块的装饰器,指定模块的控制器和提供者。
示例:
import { Module } from '@nestjs/common';
import { UsersController } from './users.controller';
import { AppService } from './app.service';
@Module({
imports: [],
controllers: [UsersController],
providers: [AppService],
})
export class UsersModule {}
详细方法介绍
控制器的常用方法
@Get()
:处理GET请求。@Post()
:处理POST请求。@Put()
:处理PUT请求。@Delete()
:处理DELETE请求。@Param()
:获取路由参数。@Query()
:获取查询参数。@Body()
:获取请求体中的数据。
服务的常用方法
@Injectable()
:使服务可被注入。- 自定义的方法(如
getUsers()
和createUser()
)可以根据需求进行定义,通常用于处理业务逻辑。
模块的常用属性
imports
:引入其他模块。controllers
:定义模块中包含的控制器。providers
:定义模块中包含的服务。exports
:允许其他模块使用该模块的提供者。
示例项目结构
结合上述概念,完整的Nest.js模块结构如下:
src
├── app.module.ts // 根模块
├── users
│ ├── users.controller.ts // 用户控制器
│ ├── users.service.ts // 用户服务
│ ├── users.module.ts // 用户模块
│ └── dto
│ └── create-user.dto.ts // 用户数据传输对象
总结
控制器、服务和模块是Nest.js的基本构建块。控制器处理请求,服务包含业务逻辑,模块组织这些组件。通过理解它们的作用和用法,开发者可以更高效地构建和管理Nest.js应用。
评论区
评论列表
{{ item.user.nickname || item.user.username }}