基本概念

class Controllers,Providers,Modules

Nest.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应用。

评论区
评论列表
menu