Day 27 - 临时插播的中间件 - Middleware

中间件 - Middleware

嗨大家好,因为在部署 Elastic Beanstalk 上遇到了一些些困难,目前暂时卡关,怕文章生不出来,我们来临时插播一下其他篇章,今天先来讲中间件 - Middleware。

Middleware 看它的名字就知道,它喜欢插在别人的中间,就像胖虎一样。

简单来说,Middleware 是介於 Client 端与後端路由中间的一层或是多层 Function,而该 Functions 能存取 Request 与 Request 资讯,也可以透过 next() 来控制流程。

还是有点复杂,我们直接进入实作部分。

建立一个 Middleware

我们可以利用 CLI 指令来建立一个 Middleware,如下:

nest g mi ExampleMiddleware

而我想单独放在一个 middleware 资料夹里,故修改成 nest g mi middleware/ExampleMiddleware。

这样子就建立完毕了:
https://ithelp.ithome.com.tw/upload/images/20201012/201196199Zas7GQFkV.png

而生成的档案则是 Middleware 的基本程序码架构:
https://ithelp.ithome.com.tw/upload/images/20201012/20119619q4GKQrlxab.png

套用 Middleware

生成 Middleware 之後,我们要在 Module 去设定 Middleware 的套用范围(虽然我们还没写逻辑),我们来到 AppModule,先实作 NestModule 并建立 configure 方法:
https://ithelp.ithome.com.tw/upload/images/20201012/20119619vjqGGdW3Kz.png

之後在利用 Consumer 来选择要执行哪个 Middleware 及执行范围:
https://ithelp.ithome.com.tw/upload/images/20201012/20119619XIPEA47SCq.png

撰写 Middleware 范例

那我们来写写 Middleware 范例,假设我想拦截 API 的回应(拿新增任务来测试),我们先写下:
https://ithelp.ithome.com.tw/upload/images/20201012/201196190AgPuvWkOV.png

然後我们再去打打看 API,结果得到了什麽:
https://ithelp.ithome.com.tw/upload/images/20201012/20119619mCjpqk1lZL.png

其他还有很多种用法,例如拦截某个参数等於什麽的时候就做某件事,或者是利用 Logger 把 HTTP 相关的东西都给列印出来等等。

/*
本系列文系个人新手开发心得,可能会有许多错误,烦请多多包容不吝指教。
*/


<<:  [Day27]- 新手的Web系列CRLF 0x2

>>:  IOS-App KVO(1)

口罩脸孔资料集的训练(Training)

上一篇我们已经为资料集做好资料前处理、资料扩增与资料集版本建立, 接下来我们要开始执行trainin...

[常见的自然语言处理技术] 文本相似度(IV): 建立自己的Word2vec模型

前言 原本以为文本相似度这个主题两天就可以结束了,没想到花了四天来讲。今天将会是介绍自然语言处理基础...

【基础应用篇】DAY2.软硬体规格全攻略

您成功注册MusesAI帐号了吗? 还没的话赶紧去看DAY1.注册教学文章喔! 欢迎来到DAY2的教...

C# 语言

https://wolkesau.medium.com/c-语言-f42ebe8eda8c C# 入...

Day-05 Ruby 的世界里,万物都是物件?

什麽是物件? 物件(object) = 状态(state) + 行为(behavior) Ruby ...