一、控制器的作用
控制器负责处理传入请求并向客户端返回响应
二、使用方法
新建/cats目录
创建cats.controller.ts
在里面添加如下内容
import { Controller, Get } from '@nestjs/common';
@Controller('cats')
export class CatsController {
@Get()
findAll(): string {
return 'This action returns all cats';
}
}
其中
@controller代表这是一个控制器类,里面的参数cats代表匹配路径为/cats,
@Get装饰器代表可以匹配的Http请求(此处是GET),并且装饰器中可以添加路径,如
@Get('/breed')
findAll(): string {
return 'This action returns all cats';
}
可以命中的路径为/cats/breed,还支持通配符?、+、* 和 ()
@Get('ab*cd')
findAll() {
return 'This route uses a wildcard';
}
可以匹配的路由有 abcd、ab_cd、abecd
nest还提供了其他方法的装饰器,如@Get()、@Post()、@Put()、@Delete()、@Patch()、@Options() 和 @Head()
findAll代表匹配之后触发的方法,名称可以随意取
三、请求对象
nest提供对请求对象的访问(默认使用express)
import { Controller, Get, Req } from '@nestjs/common';
import { Request } from 'express';
@Controller('cats')
export class CatsController {
@Get()
findAll(@Req() request: Request): string {
return 'This action returns all cats';
}
}
@Req()使用之后可以访问到请求对象
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 |
四、路由相关设置
1.状态码
可以通过@HttpCode()设置状态码
@Post()
@HttpCode(204)
create() {
return 'This action adds a new cat';
}
2.标头
使用 @Header() 装饰器,设置自定义标头内容
@Post()
@Header('Cache-Control', 'none')
create() {
return 'This action adds a new cat';
}
3.重定向
使用@Redirect重定向路由
@Get()
@Redirect('https://nest.nodejs.cn', 301)
findAll(): string {
return 'This action returns all cats';
}
4.路由参数
接收动态路由参数,如: /cats/1
@Get(':id')
findOne(@Param() params: any): string {
console.log(params.id);
return `This action returns a #${params.id} cat`;
}
接收query参数,如:/cats?name=abc&age=12
@Get()
findAll(@Query() obj: any): string {
console.log('obj ', obj)
return 'This action returns all cats';
}
此外@Query()
装饰器可以接收一个字符串来获取指定的属性
@Get()
findAll(@Query('name') obj: any): string {
console.log('name', obj)
return 'This action returns all cats';
}
标签:控制器,return,string,Get,req,002nestjs,controller,cats,action
From: https://www.cnblogs.com/idrinkmilk/p/18127116