laravel路由中间件

点击量:4220 来源:解译网 发表时间:2023-03-04 21:22作者:张哲铭

本篇文章给大家谈谈实现koa路由中间件,以及laravel路由中间件对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

1、Koa中间件使用之koa-cors

2、koa 中间件的执行包括路由执行吗

3、koa的中间件

4、如何理解 koa 中间件执行机制

Koa中间件使用之koa-cors

跨域资源共享(Cross-Origin Resource Sharing)是一种机制,用来允许不同源服务器上的指定资源可以被特定的Web应用访问。

同源是指不同的站点间,域名、端口、协议都相同,浏览器的同源策略(same-origin policy)出于安全原因,会限制浏览器的跨源 HTTP 请求。

Web应用向服务器请求资源时,由于同源策略限制,Web应用程序只能从同一个域请求 HTTP 资源。如果服务器和Web应用不在同一个域,会发起一个跨域 HTTP 请求。

当响应报文包含了正确CORS响应头, Web应用程序才能从跨域的服务器加载资源。

Koa-cors 是基于 node-cors 开发的 Koa CORS中间件。

具体的配置参考 koa-cors 文档,这里做简单介绍

laravel路由中间件

koa 中间件的执行包括路由执行吗

在koa里定义的middleware均为generator function(包括内置在顶端的respond),这是为了能从任意middleware中容易地切换到其它middleware里(如果你是前端程序员,可以理解为浏览器捕获事件的capture和propagation过程,如果你是python程序员,可以理解为jungle的middleware机制,如果你是Java程序员,这种方式则是典型的切面编程)。

为了实现这种横穿多个middleware的特性,koa通过把后一个generator作为参数(koa里常用next)传入前一个generator实现(#见koa-compose源码,这也是为什么前两个middleware有next参数而最后一个没有)。

可以看到,在koa中yield的使用是在co,而co则是包装了generator/yield Promise以模拟async/await,提供了一个更高层次的异步语法抽象。

koa在加载且合并所有的middleware之后,传递给co执行(确切地说是在http.createServer的callback触发后执行),co以图中所示逻辑不断拆解generator function,执行yield右侧固定的几种表达式(Array,Object,generator function,Promise,thunkify function),这5种表达式最终都会转化为Promise,以达到处理异步函数目的

co内部封装了onFulfilled和onRejected函数,当yield右侧的promise resolve之后,则会调用onFullfield函数,其包含了一条关键语句gen.next(res)#这句代码 用以给yield表达式赋值并执行下一次迭代。

koa通过上文的方式「深入」-「浅出」,最终在顶层的respond middleware里send response。

注:#thunk是co先前版本处理异步函数的方式,通过thunk可以将异步函数封装成curry,传入普通参数后形成仅需要callback参数的偏函数,以此简化callback调用代码(目前co中的thunk偏函数已经被#无情地Promise化了)。

koa的中间件

由 Express 原班人马打造的 koa,致力于成为一个更小、更健壮、更富有表现力的 Web 框架。使用 koa 编写 web 应用,通过组合不同的 generator,可以免除重复繁琐的回调函数嵌套,并极大地提升常用错误处理效率。Koa 不在内核方法中绑定任何中间件,它仅仅提供了一个轻量优雅的函数库,使得编写 Web 应用变得得心应手。

中间件是一种独立系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。是连接两个独立应用程序或独立系统的软件。相连接的系统,即使它们具有不同的接口,但通过中间件相互之间仍能交换信息。执行中间件的一个关键途径是信息传递。通过中间件,应用程序可以工作于多平台或OS环境

koa的中间件采用的是洋葱模型,每一次对于程序的访问,都会从外向内依次经过每一个中间件,再依次由内向外。

下面实现一个用户记录用户访问记录,服务返回时间的中间件为例。

await next 意思就是跳过当前的程序执行下一个中间件, 所以当用户访问该程序时打出的日志就是1-3-5-4-2

如何理解 koa 中间件执行机制

在我眼中,koa的确是比express轻量的多,koa给我的感觉更像是一个中间件框架,koa只是一个基础的架子,需要用到的相应的功能时,用相应的中间件来实现就好,诸如路由系统等。一个更好的点在于,express是基于回调来处理,至于回调到底有多么的不好,大家可以自行搜索来看。koa1基于的co库,所以koa1利用Generator来代替回调,而koa2由于node对async/await的支持,所以koa2利用的是async/await。关于async以及co库等,大家可以参考我之前写过的一篇文章(理解async)。koa可以说是一个各种中间件的架子,下面就来看一下koa对于中间件部分的实现:

koa1主要利用的是Generator来实现,一般来说,koa1的一个中间件大概是长这个样子的:

app.use(function *(next){

console.log(1);

yield next;

console.log(5);

});

app.use(function *(next){

console.log(2);

yield next;

console.log(4);

});

app.use(function *(){

console.log(3);

});

实现koa路由中间件的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于laravel路由中间件、实现koa路由中间件的信息别忘了在本站进行查找喔。

  • laravel路由中间件

    网友周斌提问:laravel路由中间件 解译网将综合多位内业人士从不同角度和维度来解答 本篇文章给大家谈谈实现koa路由中间件,以

    2023-03-04阅读:0
  • 微信网名英文带翻译(微信网名英文带翻译霸气)

    朋友们好,刘怡发来为大家解答以上问题。微信网名英文带翻译很多人还不知道,现在让我们一起来看看吧1、resign (认命)2、akoasm(幻听)3、unfair(偏心)4、be

    2022-06-05阅读:1
  • 绝地求生的英文名(绝地求生的英文名缩写)

    朋友们好,黄芸欢来为大家解答以上问题。绝地求生的英文名很多人还不知道,现在让我们一起来看看吧1、resign (认命)2、akoasm(幻听)3、unfair(偏心)4、bea

    2022-06-04阅读:1
  • 潮流的欧美潮网名有范儿(最新潮流英文网名)

    朋友们好,张怡伶来为大家解答以上问题。潮流的欧美潮网名有范儿很多人还不知道,现在让我们一起来看看吧1、Akoasm(幻听)2、Dimples(酒窝)3、Fairy.(仙女)4、

    2022-06-03阅读:0
  • 刺激战场军团名字英文(刺激战场霸气名字大全英文名)

    朋友们好,周孟儒来为大家解答以上问题。刺激战场军团名字英文很多人还不知道,现在让我们一起来看看吧1、resign (认命)2、akoasm(幻听)3、unfair(偏心)4、b

    2022-05-30阅读:1
  • koalas怎么读(koalas怎么读音)

    朋友们好,彭郁婷来为大家解答以上问题。koalas怎么读很多人还不知道,现在让我们一起来看看吧1、koalas英[kəʊˈɑːləz]美[koʊˈɑləz]n.树袋熊; 考拉;

    2022-05-30阅读:13
声明

删帖请联系zhiyihome@qq.com;

搜索
排行榜
关注我们

扫一扫关注我们,了解最新精彩内容