返回

**Nest.js框架深入浅出:掌控控制器中的状态码和Headers**

前端

前言

在上一篇文章中,我们介绍了Nest.js控制器模块中的路由和Request。在这篇文章中,我们将继续探索控制器模块相关的概念,重点关注状态码和Headers。我们还将探讨其他概念,包括路由参数、异步性和请求负载,以便你对Nest.js框架有更全面的了解。

状态码

状态码是HTTP协议中用来表示服务器响应状态的3位数字代码。常见的HTTP状态码有:

  • 200:成功
  • 400:错误请求
  • 401:未授权
  • 403:禁止
  • 500:内部服务器错误

你可以在控制器中使用@HttpStatus装饰器来设置状态码。例如:

import { Controller, Get, HttpStatus, Res } from '@nestjs/common';

@Controller('cats')
export class CatsController {
  @Get()
  findAll(@Res() res) {
    res.status(HttpStatus.OK).json({ message: 'Hello, world!' });
  }
}

上面的代码将把状态码设置为200,表示请求成功。

Headers

Headers是HTTP协议中用来传递元信息的一组键值对。常见的HTTP Headers有:

  • Content-Type:表示请求或响应的媒体类型。
  • Cache-Control:表示缓存策略。
  • Content-Length:表示请求或响应的长度。

你可以在控制器中使用@Header装饰器来设置Headers。例如:

import { Controller, Get, Header, Res } from '@nestjs/common';

@Controller('cats')
export class CatsController {
  @Get()
  @Header('Content-Type', 'text/plain')
  findAll(@Res() res) {
    res.json({ message: 'Hello, world!' });
  }
}

上面的代码将把Content-Type Header设置为text/plain,表示响应的媒体类型是纯文本。

路由参数

路由参数是通过URL传递给控制器的参数。路由参数可以使用@Param装饰器来获取。例如:

import { Controller, Get, Param, Res } from '@nestjs/common';

@Controller('cats')
export class CatsController {
  @Get(':id')
  findOne(@Param('id') id: string, @Res() res) {
    res.json({ message: `Hello, ${id}!` });
  }
}

上面的代码将通过URL中的id参数来获取猫的ID,并将其作为参数传递给findOne方法。

异步性

Nest.js支持异步控制器方法。异步控制器方法可以使用async来定义。例如:

import { Controller, Get, Res } from '@nestjs/common';

@Controller('cats')
export class CatsController {
  @Get()
  async findAll(@Res() res) {
    const cats = await this.catsService.findAll();
    res.json({ message: 'Hello, world!' });
  }
}

上面的代码将把findAll方法定义为异步方法,并使用await关键字来等待catsService.findAll()方法执行完成。

请求负载

请求负载是客户端发送给服务器的数据。请求负载可以使用@Body装饰器来获取。例如:

import { Controller, Post, Body, Res } from '@nestjs/common';

@Controller('cats')
export class CatsController {
  @Post()
  create(@Body() catDto: CatDto, @Res() res) {
    const cat = this.catsService.create(catDto);
    res.json({ message: 'Hello, world!' });
  }
}

上面的代码将把请求负载作为参数传递给create方法,并使用this.catsService.create()方法来创建猫。

总结

在这篇文章中,我们介绍了Nest.js控制器模块中的状态码、Headers、路由参数、异步性和请求负载等概念。通过阅读本文,你应该对Nest.js控制器模块有了一个全面的了解。如果你有任何问题或建议,欢迎在评论区留言。