第二部分: Koa

    Python django Node Express Java Spring,Web框架大多会有一个面向AOP的中间件模块,内部操纵Req/Res对象可选执行next动作,Koa与martini类似,都属于设计清爽的中间件web框架,采用洋葱模型middleware stack,但合并了Request与Response对象,编写更直观方便。


    Laravel after方法的书写不够自然,需要中间变量保存Response; Spring的Interceptor功能强大,但编写略繁琐; Koa则简单的多,而且可以在某个中间件中灵活控制之后中间件执行时机。

    其实对于web框架来讲,业务逻辑归根结底都在处理请求与相应对象,web中间件实质就是在请求与响应中间开放出来的可编排的扩展点,比如修改请求做URLRewrite,比如请求日志,身份验证…

    我们基于PHP5.6与yz-swoole(有赞内部自研稳定版本的swoole,17年6月即将开源,敬请期待),用少量的代码即可实(chao)现(xi)一个php-koa。

    Koa2.x决定全面使用async/await,受限于PHP语法,我们这里仅实现Koa1.x,将Generator作为middleware实现形式。