Open ckinmind opened 5 years ago
koa中用的几个库相关:
koa-router
: 用于描述 URL 与处理函数之间的对应关系的
koa-bodyparser
: post 请求通常都会通过表单或 JSON 形式发送,而无论是 Node 还是 Koa,都 没有提供 解析 post 请求参数的功能。引入一个koa-bodyparser包,不管是通过表单提交还是以JSON形式发送,我们都可以通过ctx.request.body获取到提交的数据
koa-session2
: 添加session?
url-parse
: 解析路由
参考资料:koa2入门笔记
每收到一个 http 请求,Koa 都会调用通过 app.use() 注册的 async 函数,同时为该函数传入 ctx 和 next 两个参数, 这里的 async 函数就是我们所说的中间件
ctx 作为上下文使用,包含了基本的
ctx.request
和ctx.response
。另外,还对 Koa 内部一些常用的属性或者方法做了代理操作,使得我们可以直接通过 ctx 获取next 参数的作用是将处理的控制权转交给下一个中间件,而 next() 后面的代码,将会在下一个中间件及后面的中间件(如果有的话)执行结束后再执行
如果一个中间件没有调用 await next(),会怎样呢?答案是『后面的中间件将不会执行』。 如果await next()后面没有中间件了,那么也将结束执行
get请求,请求参数为URL路径后面以?开头的查询参数:如http://localhost:3000/home?id=1&name=hfimy。使用
ctx.request.query
或ctx.request.querystring
可以获取到查询参数。不同的是query返回的是对象,querystring返回的是字符串get请求,请求参数放在URL路径里面,如http://localhost:3000/home/1/hfimy。这种情况下,koa-router会把请求参数解析在params对象上,通过
ctx.params
可以获取到这个对象log4js 是 Node.js 中一个成熟的记录日志的第三方模块