1、allowedMethods()

allowedMethods()中间件主要用于处理options请求 , 响应405和501状态 。上述代码中的ctx.matched中保存的正是前面matched对象中的path(在routes方法中设置 , 后面会提到 。) , 在matched对象中的path数组不为空的前提条件下:
服务器不支持当前请求方法 , 返回501状态码;
当前请求方法为OPTIONS , 返回200状态码;
path中的layer不支持该方法 , 返回405状态;
对于上述三种情况 , 服务器都会设置Allow响应头 , 返回该路由路径上支持的请求方法 。
2、routes()

routes()中间件主要实现了四大功能 。
将matched对象的path属性挂载在ctx.matched上 , 提供给后续的allowedMethods中间件使用 。(见代码中的【1】)
将返回的dispatch函数设置router属性 , 以便在前面提到的Router.prototype.use方法中区别路由级别中间件和嵌套路由 。(见代码中的【2】)
插入一个新的路由前置处理中间件 , 将layer解析出来的params对象、路由别名以及捕获数组挂载在ctx上下文中 , 这种操作同理Koa在处理请求之前先构建context对象 。(见代码中的【3】)
而对于路由匹配到众多layer , koa-router通过koa-compose进行处理 , 这和koa对于中间件处理的方式一样的 , 所以koa-router完全就是一个小型洋葱模型 。
七、总结
koa-router虽然是koa的一个中间件 , 但是其内部也包含众多的中间件 , 这些中间件通过Layer对象根据路由路径的不同进行划分 , 使得它们不再像koa的中间件那样每次请求都执行 , 而是针对每次请求采用match方法匹配出相应的中间件 , 再利用koa-compose形成一个中间件执行链 。
推荐阅读
- dnf记忆之地在哪
- IE和Firefox之间在JavaScript语法上的差异
- 关于小I耳机插孔的解决办法
- 野性之皮图纸怎么弄
- 元气骑士死神之息有什么用
- 关于ET280手机重复的问题之我见
- 带你玩转577W视频播放
- 多普达585之常用设置
- 千金之裘非一狐之腋的意思
- 暗夜之神中如何摆摊交易
