Koa的中间件很像Express的中间件,也是对HTTP请求进行处理的函数,可是必须是一个Generator函数。并且,Koa的中间件是一个级联式(Cascading)的结构,也就是说,属因而层层调用,第一个中间件调用第二个中间件,第二个调用第三个,以此类推。上游的中间件必须等到下游的中间件返回结果,才会继续执行,这点很像递归。nginx
routerweb
koa-route
模块所创建的路由,支持相似与/:category/:id
这样的参数路由,以及^/.*/?$
正则匹配,能够经过this.params
获取这些参数。npm
koa-static浏览器
若是网站提供静态资源(图片、字体、样式表、脚本......),为它们一个个写路由就很麻烦,也不必。koa-static
模块封装了这部分的请求服务器
koa-composecookie
koa-compose模块能够将多个中间件合成为一个session
在系统中,用户进行特定的操做的时候,可能须要进行登陆检查或权限检查,若是没有登陆或没有权限,就不能继续操做要进行登陆检查,通常使用session,session和cookie都是web开发为了解决http是无状态协议的方案。
session是web开发中的一个概念,用来在服务器端存储同一个客户端在一系列跨请求操做的信息,一般是用户打开浏览器,登入系统session开始,用户关闭浏览器,session关闭
cookie是服务器端建立的,保存在客户端的文本格式的信息,在cookie的生存期每次访问服务器端的时候,自动带到服务器端,便于服务器端获取信息app
ctx.cookies用来读写cookie
koa
你会看到1 views
。刷新一次页面,就变成了2 views
。再刷新,每次都会计数增长1。函数
若是指定加密的话,必须用app.keys
指定加密短语。
app.keys = ['secret1', 'secret2'];
文件上传
1.使用File表单元素
2.表单的method必须是post,enctype是multipart/form-data
3.安装multy中间件
4.在router中router.use(Multy())
5.经过ctx.request.body就能够正常读取请求体的数据
koa-compress
大多数状况下,咱们的网站不单单就是存文字的还要包含一些其余类型的文件,好比:图片,mp3等。咱们知道浏览器是支持加载gzip压缩过的网页的,因此以nginx为表明的静态文件服务器默认都会开启gzip压缩。那么咱们Nodejs服务能不能对资源文件进行压缩呢?
答案是确定的。Koa的做者写了一个中间件compress
,支持对请求的response
进行压缩,具体的使用以下: