Nestjs
前端
技术分享
Linux
Python
Rust
常用工具
😅nestjs 第一章、常用工具使用
type
status
date
slug
summary
tags
category
icon
password
前言
一、Cookie
一个HTTP cookie是指存储在用户浏览器中的一小段数据。Cookies被设计为创建一种可靠的机制让网站来记录状态信息。当用户再次访问网站时,发出的请求会自带cookie。
使用教程
安装
使用
在
main.ts
中使用:以
app.controller.ts
为例子,使用:<br/>
二、文件上传
为了处理文件上传,Nest 提供了一个内置的基于
multer
中间件包的 Express
模块。Multer
处理以 multipart/form-data
格式发送的数据,该格式主要用于通过 HTTP POST 请求上传文件。这个模块是完全可配置的,您可以根据您的应用程序需求调整它的行为。使用教程
安装
安装 Multer 的类型声明包:
使用
例子
upload.controller.ts
:前端上传:
api
方法【request
为封装的 axios
】:三、中间件
中间件是在路由处理程序 之前 调用的函数。 中间件函数可以访问请求和响应对象,以及应用程序请求响应周期中的 next() 中间件函数。
next()
中间件函数通常由名为 next
的变量表示。使用教程
生成
可以使用快捷命令生成一个中间件
使用
如过你使用的是全局中间件,可以在
main.ts
中引入:logger.middleware.ts
, 默认生成的中间件是类的写法,也可以自己写成函数写法,这样写简洁一些,可以根据自己需求来:如果你要使用的单个控制器的中间件,可以在
app.module.ts
中配置:四、管道
管道有两个典型的应用场景:
- 转换:管道将输入数据转换为所需的数据输出(例如,将字符串转换为整数)
- 验证:对输入数据进行验证,如果验证成功继续传递; 验证失败则抛出异常
使用教程
生成
可以使用快捷命令生成一个中间件
使用对象结构验证,教程:
<br/>
使用
app.pipe.ts
在控制器中使用:
PipeSchema
规则如下:如果传的参数不对会自动检测出来
五、授权守卫
只有当调用者(通常是经过身份验证的特定用户)具有足够的权限时,特定的路由才可用。我们现在要构建的
AuthGuard
假设用户是经过身份验证的(因此,请求头附加了一个 token
)。它将提取和验证 token
,并使用提取的信息来确定请求是否可以继续。使用教程
生成
使用
在控制器中使用,可以通过守卫来控制路由权限:
在守卫中,可以这么写(
auth.guard.ts
),返回 false
将不能通过守卫,无法访问该路由,反之:你也可以全局使用,在
main.ts
中添加:六、异常过滤器
内置的异常层负责处理整个应用程序中的所有抛出的异常。当捕获到未处理的异常时,最终用户将收到友好的响应。
使用教程
生成
使用
这里使用自定义异常(
http.fillter.ts
):过滤器可以在当个控制器中使用,也可以在全局中使用,我这里是在全局中使用(
main.ts
):使用全局过滤器后,在控制器中使用:
请求
/exception
返回:Demo
以上例子整理成 demo , 源码放在下面: