上下文(Context)
- Koa Context 将 node 的 request 和 response 对象封装到单个对象中,为编写 Web 应用程序和 API 提供了许多有用的方法;
- 这些操作在 HTTP 服务器开发中频繁使用,它们被添加到此级别而不是更高级别的框架,这将强制中间件重新实现此通用功能;
context 实现了不同应用以及不同请求之间的环境隔离
ctx 实现代理
Context API
- ctx.req:Node 的 request 对象.
- ctx.res:Node 的 response 对象,绕过 Koa 的 response 处理是 不被支持的. 应避免使用以下 node 属性:
- res.statusCode
- res.writeHead()
- res.write()
- res.end()
- ctx.request:koa 的 Request 对象.
- ctx.response:koa 的 Response 对象.
- ctx.state:推荐的命名空间,用于通过中间件传递信息和前端视图
- ctx.app:应用程序实例引用
- ctx.app.emit:Koa 应用扩展了内部 EventEmitter。
- ctx.app.emit 发出一个类型由第一个参数定义的事件。
- 对于每个事件,您可以连接 “listeners”,这是在发出事件时调用的函数
- ctx.cookies.get(name, [options]):通过 options 获取 cookie name,signed 所请求的cookie应该被签名
- ctx.cookies.set(name, value, [options]):通过 options 设置 cookie name 的 value :
- maxAge 一个数字表示从 Date.now() 得到的毫秒数
- signed cookie 签名值
- expires cookie 过期的 Date
- path cookie 路径, 默认是’/‘
- domain cookie 域名
- secure 安全 cookie
- httpOnly 服务器可访问 cookie, 默认是 true
- overwrite 一个布尔值,表示是否覆盖以前设置的同名的 cookie (默认是 false). 如果是 true, 在同一个请求中设置相同名称的所有 Cookie(不管路径或域)是否在设置此Cookie 时从 Set-Cookie 标头中过滤掉。
- ctx.throw([status], [msg], [properties]):Helper 方法抛出一个 .status 属性默认为 500 的错误,这将允许 Koa 做出适当地响应;
- ctx.respond
- 为了绕过 Koa 的内置 response 处理,可以显式设置 ctx.respond = false; 如果想要写入原始的 res 对象而不是让 Koa 处理你的 response,请使用此参数;
- 请注意,Koa 不支持使用此功能。这可能会破坏 Koa 中间件和 Koa 本身的预期功能。使用这个属性被认为是一个 hack,只是便于那些希望在 Koa 中使用传统的 fn(req, res) 功能和中间件的人;
Request 别名(和 Request 别名等效)
- ctx.header
- ctx.headers
- ctx.method
- ctx.method=
- ctx.url
- ctx.url=
- ctx.originalUrl
- ctx.origin
- ctx.href
- 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 别名(和 Response 别名等效)
- ctx.body
- ctx.body=
- ctx.status
- ctx.status=
- ctx.message
- ctx.message=
- ctx.length=
- ctx.length
- ctx.type=
- ctx.type
- ctx.headerSent
- ctx.redirect()
- ctx.attachment()
- ctx.set()
- ctx.append()
- ctx.remove()
- ctx.lastModified=
- ctx.etag=
打赏作者
您的打赏是我前进的动力
微信
支付宝
Koa 中的错误处理
上一篇
评论