**Nest.js框架深入浅出:掌控控制器中的状态码和Headers**
2024-02-16 06:43:20
前言
在上一篇文章中,我们介绍了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控制器模块有了一个全面的了解。如果你有任何问题或建议,欢迎在评论区留言。