😅nestjs 第一章、常用工具使用

type
status
date
slug
summary
tags
category
icon
password

前言

这里主要介绍一些我们在开发中会常用的工具以及使用。主要看 nestjs中文网,先看每个教程再结合使用。该 demo 会放到 GithubGitee 上,有兴趣可以拉到最底下获取。

一、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 , 源码放在下面:
nestjs 前言nestjs 第二章、数据库的使用