@nestjs/core
@nestjs/common:
装饰器所在模块:'@nestjs/common';
常用装饰器:@Module() @Controller() @Injectable() @Get() @Post() @Request() @Response()@Next() @Session()@Param()@Body()@Query()@Headers()@HttpCode()
可传入一个对象类型的参数
- @Module({
- imports: [], // 依赖注入子模块
- controllers: [AppController], // 注入模块控制器
- providers: [AppService], // 注入模块的Service
- })
可传入字符串类型参数,对应请求的路由
- @Controller({
- path:'user',
- version:'1'
- })
指定当前控制器的路由是'user' ,版本是1,使用的时候是localhost:3000/v1/user
用于定义一个类可以被依赖注入(Dependency Injection,DI)。NestJS的DI容器会负责创建和管理该类,在需要该类的地方注入。
- export class AppController {
- constructor(private readonly appService: AppService) {}
- }
因为AppService类添加了@Injectable()依赖注入,DI容器会在这里注入。
作用是将参数变为Request对象,然后可以获取请求参数、请求头等信息
作用是将参数变为请求url的query对象,然后可以获取请求参数。也可以用req.query代替。
- @Get()
- getHello(@Request() req,@Query() qs): string {
- console.log(qs,'qs')
- console.log(req.query,'req')
- return this.appService.getHello();
- }
主要作用将参数转变为Body对象,直接获取请求体的参数。
同样可以通过req.body来获取
通过传参可以直接获取body的属性
- @Post('setHello')
- setHello(@Request() req,@Body('name') body):string{
- console.log(body,'body')
- console.log(req.body,'req')
- return 'post'
- }
根据Restful协议将控制器的函数映射为GeT或Post请求响应。
可传参数,将函数的url变为动态路由
- @Get('getHello/:id')
- getHello(@Request() req,@Query() qs,@Param('id') id): string {
- console.log(qs,'qs')
- console.log(req.query,'req')
- console.log(id,'id')
- return this.appService.getHello();
- }
获取动态路由参数,可传参,指定当前restful URL的具体的参数
用于获取请求头,可以用req.headers代替
- @Post('setHello')
- setHello(@Request() req,@Body('name') body,@Headers() headers):string{
- console.log(req.headers,'req.headers')
- console.log(headers,'headers')
- return 'post'
- }
作用:控制接口返回的状态码
- @Post('setHello')
- @HttpCode(500)
- setHello(@Request() req,@Body('name') body,@Headers() headers):string{
- console.log(req.headers,'req.headers')
- console.log(headers,'headers')
- return 'post'
- }
1. 装饰器能够提供编码的便捷,部分装饰器可以不用,Request和Response直接获取也没问题,装饰器主打一个方面
2. 学习装饰器前,最好先学习下装饰器的基本原理