Nest.js 学习笔记

控制器

  • 采用命令nest new project-name初始化一个项目之后,会提示yarn start启动项目。此命令不是开发模式命令,会导致你修改文件与新增文件不会生效。应该使用yarn start:dev启动。
  • 支持两个支持开箱即用的 HTTP 平台:express 和 fastify。默认是express。平台会暴露自己的 API 供使用。
  • 使用命令 nest g controller api 创建一个控制器。
  • 路由与处理函数命名无关,有些框架,比如 ThinkJS,不要写路由,处理函数就是路由。
  • Nest 支持两种数据返回方法。一种是直接返回值,其他的比如响应码由 Nest 负责。另外一种是通过 @Res() 注入类库特定的响应对象,自己构建响应。下面是一个自己构建响应状态码为204的例子:

    import { Controller, Get, Res } from '@nestjs/common';
    import { Response } from 'express';
    
    @Controller('api')
    export class ApiController {
      @Get('res')
      res(@Res() res: Response) {
        res.status(204).send('Hello Res Test');
      }
    }
  • Nest 提供的装饰器及其代表的底层平台特定对象的对照列表
@Request(),@Req() req
@Response(),@Res()* res
@Next() next
@Session() req.session
@Param(key?: string) req.params/req.params[key]
@Body(key?: string) req.body/req.body[key]
@Query(key?: string) req.query/req.query[key]
@Headers(name?: string) req.headers/req.headers[name]
@Ip() req.ip
@HostParam() req.hosts
  • Nest 为所有标准的 HTTP 方法提供了相应的装饰器:@Put()@Delete()@Patch()@Options()、以及 @Head()。此外,@All() 则用于定义一个用于处理所有 HTTP 请求方法的处理程序。
  • 路由通配符:@Get('ab*cd')。匹配ab_cd,abxxxcd等等。
  • 状态码,由@nestjs/common导入,使用比如:@HttpCode(201)
  • 自定义响应头,@Header('Hello', 'World')
  • 重定向,@Redirect('https://nestjs.com', 301)
  • 路由参数,@Param() params,GET /cats/1, params.id == 1
    @Get(':id')
    findOne(@Param() params): string {
        console.log(params.id);
        return `This action returns a #${params.id} cat`;
    }

提供者

  • nest g service api创建服务。

模块

  • nest g module api 创建模块

异常处理

  • throw new HttpException('Forbidden', HttpStatus.FORBIDDEN);
暂无评论

发送评论 编辑评论


				
上一篇
下一篇