koa 2.0 系列:
在介绍篇时,提到过 Web Framework 的最重要的作为就是处理 request & reponse。
koa 将 node 的 request & reponse 对象封装在一个新的对象中
context,并提供一些更简单的 API 方便调用。
Context 是在每一个 request
Koa1 在调用时,使用的是 this,而 koa2 则是 ctx。
1 | // Koa2 |
## API
Context 提供的一些方法和 accessors(访问器)。
ctx.req
node request 对象,被封装到了 ctx.req
ctx.res
node response 对象,被封装到了 ctx.res
ctx.request
koa 的 Request 对象。是对 node 的 request 进一步抽象和封装,提供了日常 HTTP 服务器开发中一些有用的功能。
ctx.response
koa 的 Response 对象,是对 node 的 response 进一步抽象和封装,提供了日常 HTTP 服务器开发中一些有用的功能。
ctx.cookies
1 | ctx.cookies.get(name, [options]) |
ctx.state
可以通过 State 向前端 View 传递数据:
1 | this.state.user = await User.find(id); |
ctx.app
Application 实例的指针。
## cxt 访问器
context 提供一些 alias & accessors 以方便更快操作 request & response。
Request aliases
- ctx.header
- ctx.method
- ctx.method=
- ctx.url
- ctx.url=
- ctx.originalUrl
- ctx.path
- ctx.path=
- ctx.query
- ctx.query=
- ctx.querystring
- ctx.querystring=
- ctx.host
- ctx.hostname
- ctx.fresh
- ctx.stale
- ctx.socket
- ctx.protocol
- ctx.secure
- ctx.ip
- ctx.ips
- ctx.subdomains
- ctx.is()
- ctx.accepts()
- ctx.acceptsEncodings()
- ctx.acceptsCharsets()
- ctx.acceptsLanguages()
- ctx.get()
Response aliases
- ctx.body
- ctx.body=
- ctx.status
- ctx.status=
- ctx.length=
- ctx.length
- ctx.type=
- ctx.type
- ctx.headerSent
- ctx.redirect()
- ctx.attachment()
- ctx.set(field, value) // 设置 response header 字段 field 的值为 value。
- ctx.remove()
- ctx.lastModified=
- ctx.etag=
REF::
https://segmentfault.com/a/1190000006085240
https://segmentfault.com/a/1190000006145114