参考网址:https://chenshenhai.github.io/koa2-note/
原生koa2路由
1 | const Koa = require('koa'); |
这里fs.readFile(..., 'utf8', ...)
第二个参数是文件编码,如果不指定默认为raw buffer
,刷新页面会变成下载。
koa-router中间件
1 | const Router = require('koa-router'); |
官方文档:https://github.com/alexmingoia/koa-router
获取请求参数
GET请求参数获取
在koa中,获取GET请求数据源头是koa中request对象中的query方法或querystring方法,query返回是格式化好的参数对象,querystring返回的是请求字符串,由于ctx对request的API有直接引用的方式,所以获取GET请求数据有两个途径。
POST请求参数获取
对于POST请求的处理,koa2没有封装获取参数的方法,需要通过解析上下文context中的原生node.js请求对象req,将POST表单数据解析成query string(例如:a=1&b=2&c=3),再将query string 解析成JSON格式(例如:{“a”:”1”, “b”:”2”, “c”:”3”})
1 | function parsePostData(ctx) { |
koa-bodyparser中间件
1 | var Koa = require('koa'); |
静态资源加载
1 | const serve = require('koa-static'); |
session操作
koa2原生功能只提供了cookie的操作,但是没有提供session操作。session就只用自己实现或者通过第三方中间件实现。在koa2中实现session的方案有一下几种
- 如果session数据量很小,可以直接存在内存中
- 如果session数据量很大,则需要存储介质存放session数据
数据库存储方案:
将session存放在MySQL数据库中
需要用到中间件:
- koa-session-minimal 适用于koa2 的session中间件,提供存储介质的读写接口 。
- koa-mysql-session 为koa-session-minimal中间件提供MySQL数据库的session数据读写操作。
- 将sessionId和对于的数据存到数据库
- 将数据库的存储的sessionId存到页面的cookie中
- 根据cookie的sessionId去获取对于的session信息