nestjs[中间件middleware的使用][5]

天涯浪子 提交于 2020-02-05 09:26:36

例子:一例看懂中间件、守卫、管道、异常过滤器、拦截器
接收一个接口请求,如:‘/xxx’,然后我要获取请求参数,但是在获取请求参数之前我要对参数内容做一下改变呢?比如:获取xml参数的时候,express是不支持application/xml这个格式的。因此我可以用到中间件对路由请求之前的逻辑做下处理。

中间件的概念

在这里插入图片描述
通俗来讲就是对请求之前的内容(即请求还未到达路由/xxx)做一些逻辑相关的处理

例子:

获取xml参数,使用中间件对请求参数做一下前置处理。
由于express不支持application/xml需要xml2js包协助

npm install xml2js --save 

首先创建中间件:xml.middleware.ts文件如下:

在这里插入图片描述
在这里插入图片描述
中间件编写完毕,然后就是路由controller.ts的内容,这里仅仅只是获取了一下body数据看看是否转换成功
在这里插入图片描述
最后是在app.module.ts中注册中间件

模块中注册

在这里插入图片描述
注意:consumer.apply可以注册多个中间件以逗号分隔, forRoutes()可以针对单个路由如:/app/list 或者是整个controller层,也可以是多个controller层(以逗号分隔),还可以除去某个或者某些路由使用consumer.exclude(‘/app/list’,’…’)

全局注册

在main.ts文件中写入如下:即可让所有接口都接上这个中间件
在这里插入图片描述

函数式中间件

这个参考官网即可,都是一样的原理

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!