Controller
它 主要是负责 特定路由请求处理并将响应结果返回给客户端。
每个控制器 它会有多个路由,不同路由对应不同的业务请求处理。
在 Nest
中, 创建一个 控制器,应该使用类 和 装饰器 , 装饰器会使类相关联的数据的关联起来,将请求绑定到相应的控制器。
可以使用Nest-cli 提供的指令 快速创建一个 CURD
1.3.1 路由
@Controller
是 Nest
的基本控制器,通过修饰器 @Controller
可以将路由分组,模块化进行路由的管理,并最大限度的减少了代码重复性。
路由的 形成 :
- 控制器装饰器前缀
@Controller('user')
+ - 请求方法装饰器结合
@Get('getDeatil')
将形成路由映射user/getDeatail
如何进行路由分组呢?
@Controller
接受一个参数,这可参数可选,默认如果不传, 就是/
@Controller(分组名)
通过 访问 http://localhost:3000/user/getUserInfo
就可以访问到响应数据。
@Controller
装饰器 修饰 类,该类就拥有和装饰器关联的属性和功能,传递了一个参数 user
, 说明当前路由分组名称为 user
, 当前类下的所有基准路由都是 /user/
开头了。
通过 HTTP 请求方法装饰器
修饰方法,它会方法告诉 Nest 为 HTTP 请求的特定端点创建处理程序。
栗子中,getUserInfo
方法被 @Get
所修饰,所以它是一个 Get
请求。
1.3.2 请求参数装饰器
通过对客户端发起的请求参数做解析处理,Nest
提供的访问请求对象 默认方式为 express
.
|
| 备注 |
|
| |
|
| |
|
| |
|
| 请求携带的session |
|
| 获取请求携带的动态参数 eg: /user/adxin daxin 就是动态参数 |
|
| 获取请求体参数 |
|
| 获取 url?id= 携带的参数, 通常是get |
|
| 获取请求头内容 |
|
| |
|
|
Nest 为所有标准 HTTP 方法提供装饰器:
@Get()
, @Post()
, @Put()
, @Delete()
, @Patch()
, @Options()
, 和 @Head()
. 此外, @All()
定义处理所有这些的端点。
1.3.3 路由通配符
支持基于模式的路由。 例如,星号用作通配符,将匹配任何字符组合。
'ab*cd'
路由路径将匹配 abcd
, ab_cd
, abecd
, 等等
1.3.4 请求状态码
响应状态码默认为 200
, POST
为 201
, 我们可以通过添加 @HttpCode(...)
处理程序级别的装饰器。 指定请求 Code
1.3.5 自定义响应头
可以通过使用 @Header()
装饰器或特定于库的响应对象(并调用 res.header()
直接地)。
1.3.6 重定向
响应重定向到特定 URL,响应重定向到特定 URL 来重定向,@Redirect()
需要两个参数, url
和 statusCode
,两者都是可选的。 默认值为 statusCode
是 302
( Found
) 如果省略。
1.3.7 路由参数
当获取某个文章或数据时,需要动态传递id,那么我们可以使用 Get
请求,或拼接动态 id
来获取,在Nest
中,可以使用 @Param()
装饰器,
它用于修饰方法参数,我们可以通过 params
获取请求动态id
.
两种写法: