当前位置: 首页 > news >正文

哔哩网站开发需求分析模板网络推广站

哔哩网站开发需求分析模板,网络推广站,贵州 政府网站建设规范,网站建设报告 商业价值基本概念 中间件是在路由处理程序之前调用的函数。中间件函数可以访问请求和响应对象。在程序中我们可以让多个中间件串起来一起使用,当多个中间件一起使用时我们可以使用next()调用下一个中间件。 中间件主要是可以实现如下功能: 执行任何代码更改请…

基本概念

中间件是在路由处理程序之前调用的函数。中间件函数可以访问请求响应对象。在程序中我们可以让多个中间件串起来一起使用,当多个中间件一起使用时我们可以使用next()调用下一个中间件。

中间件主要是可以实现如下功能:

  • 执行任何代码
  • 更改请求和响应对象
  • 结束请求-响应周期
  • 调用堆栈中的下一个中间件函数
  • 如果当前的中间件函数没有结束请求-响应周期,则必须调用 next()将控制权传递给下一个中间件函数。否则,请求将被挂起

在 NestJS 中可以在函数或者带有@Injectable()装饰器装饰的类来定义中间件,并且使用类时我们必须实现NestMiddleware接口,函数不需要做特殊处理。

依赖注入

在 NestJs 中中间件可以使用依赖注入的方式进行注入使用,就像控制器和提供者一样进行注入。

需要使用的时候,我们可以通过constructor进行实例化,然后进行使用。

在模块中使用中间件

@Module装饰器装饰的类中,我们是没有地方进行注入的,我们只能在类中使用configure()来声明使用中间件,并且类还必须集成NestModule接口。

接下来我们声明一个日志中间件,主要是简单的把请求对象和响应对象打印一下,具体代码如下:

// 日志中间件
import { Injectable, NestMiddleware } from "@nestjs/common";
import { Request, Response, NextFunction } from "express";@Injectable()
export class LoggerMiddleware implements NestMiddleware {use(req: Request, res: Response, next: NextFunction) {console.log("-------");console.log(req);console.log(res);console.log("-------");next();}
}
// App模块
@Module({imports: [CommodityModule, AccountModule],
})
export class AppModule implements NestModule {configure(consumer: MiddlewareConsumer) {consumer.apply(LoggerMiddleware).forRoutes("commodity");}
}

在上面这里例子中,我们的中间件主要是针对带有commodity前缀的所有请求路径进行处理,并且注入的中间件为LoggerMiddleware

我们还可以在forRoutes传入参数对象,从而过滤出符合的请求进入到中间件中进行处理。例如我们限定监听请求路径是commodity并且是POST的请求:

configure(consumer: MiddlewareConsumer) {consumer.apply(LoggerMiddleware).forRoutes({ path: 'commodity', method: RequestMethod.POST });
}

forRoutes 的路由通配符

在上述的例子中,我们在forRoutes中传入路由参数后筛选出匹配的路由地址,其中path是匹配的路由地址,我们可以使用通配符来定义匹配的路由,而通配符设置规则已经在NestJS 的 Controller 学习文章中介绍过。

中间件消费者(MiddlewareConsumer 类)

MiddlewareConsumer是一个辅助类,它提供了几种内置方法来管理中间件。

forRoutes()方法传入的参数可以是字符串、多个字符串、RouterInfo 对象和控制器类,建议使用控制器类来作为forRoutes的参数,因为使用控制器类后,我们不需要过多的来维护监听的数据,这样维护效率会比较高并且清晰。

排除路线

有些时候我们希望排除某些路由应用中间件的时候,我们可以使用exclude()方法来排除某些路由。该方法传入的参数可以是字符串、多个字符串和 RouterInfo。具体的例子如下:

configure(consumer: MiddlewareConsumer) {consumer.apply(LoggerMiddleware).exclude('account/(.*)').forRoutes(CommodityController, AccountController);
}

函数中间件

当我们的中间件不需要任何成员、方法和依赖项的时候,可以使用函数中间件来替代类中间件。函数中间件的例子我们还是采用日志中间件为例,具体的例子如下:

export function MyLogger(req: Request, res: Response, next: NextFunction) {console.log("-------");console.log(req);console.log(res);console.log("-------");next();
}

全局中间件

全局中间件可以在main.ts文件中进行定义使用,具体如下:

const app = await NestFactory.create(AppModule);
app.use(logger);
await app.listen(3000);
http://www.yidumall.com/news/24499.html

相关文章:

  • seo网站买seo营销网站的设计标准
  • 专业网站建设一条龙郑州关键词网站优化排名
  • 网站扩展名郑州网络优化实力乐云seo
  • 北京怎样做网站推广最新疫情19个城市封城
  • 安徽网站建设公司排名经典广告推广词
  • 西安前端培训机构推荐池州网站seo
  • 短视频运营策划seo技术教程网
  • 做视频网站用什么系统自己想做个网站怎么做
  • 做网站能自己找服务器吗免费浏览外国网站的软件
  • 池州专业网站建设怎么样今日头条seo
  • 在工商局网站如果做注销公告合肥搜索引擎优化
  • 可以挣钱的网站知名的搜索引擎优化
  • 滨州北京网站建设价格seo快速优化技术
  • 日本做黄视频网站有哪些长沙seo优化价格
  • 重庆市建筑工程信息官方网站小程序推广方案
  • 在线网站系统客服全国病毒感染最新消息
  • 广州市住房城乡建设局网站中国制造网
  • 广州手机建设网站如何推广自己的网站
  • 什么专业的会做网站网站优化及推广
  • 大数据网站开发工程师合肥关键词排名
  • 产品商城网站建设关键词拓展工具有哪些
  • wordpress媒体库打不开关键词优化话术
  • 做兼职哪家网站靠谱百度关键词搜索推广
  • 域名价格一览表seo的作用主要有
  • php ajax网站开发典型实例 pdf产品线上推广渠道
  • 画中画有哪些网站可以做网络营销师报名官网
  • 做外汇交易的浏览什么网站百度站长工具验证
  • wordpress做视频网站吗seo主要做什么工作
  • 外贸网站建设如何做呢百度推广怎么样
  • 武汉云时代网站建设公司怎么样小升初最好的补课机构排行榜