Nestjs 学习系列基础篇4 - Controller 与 HTTP接口实现

162 阅读1分钟

Nestjs 学习系列基础篇4 - Controller 与 HTTP接口实现

  • Controller的作用
  • DTO 的作用
  • 实现完整的HTTP接口定义

Controller 概念

controller 参考地址

Controllers are responsible for handling incoming requests and returning responses to the client.

负责处理输入的request 请求并向客户端进行相应的。

nest4_1.jpg

MVC 模型

nest4_2.png

三层结构

nest4_3.png

DTO 的概念

数据传输对象(DTO)(Data Transfer Object),是一种设计模式之间传输数据的软件应用系统。数据传输目标往往是数据访问对象从数据库中检索数据。数据传输对象与数据交互对象或数据访问对象之间的差异是一个以不具有任何行为除了存储和检索的数据(访问和存取器)。

nest4_4.png

项目中的应用

src/user/dto/create-user.dto.ts

import { ApiProperty } from '@nestjs/swagger';
import { IsEmail, IsNotEmpty, Length, Matches } from 'class-validator';

export class CreateUserDto {
  @ApiProperty({ example: '18759112345' })
  readonly phone: string;

  @ApiProperty({ example: 'dome' })
  name: string;

  @ApiProperty({ example: '123456' })
  passowrd: string;

  @ApiProperty({ example: '1@1.com' })
  email: string;
}

src/user/user.controller.ts

...

@Controller('users')
@ApiTags('用户管理')
export class UserController {
  ...
  @ApiResponse({
    status: HttpStatus.CREATED,
    type: CreateUserDto,
  })
  @ApiBearerAuth()
  create(@Body() createUserDto: CreateUserDto) {
    return this.userService.create(createUserDto);
  }
  ...
}

项目仓库地址

仓库地址Github: dome-server

==注意:基础篇的的代码在 base 分支下==