Node.js+Webpack开发实战
上QQ阅读APP看书,第一时间看更新

5.4 Context

Context在Koa应用中又称为“上下文”,该对象包含了Koa请求对象、Koa响应对象和应用实例,Context可以理解一个容器,该容器挂载了本次请求的请求对象和响应对象等信息。

中间件通过操作Context对象来获取请求信息,处理之后返回响应。

Context实例有以下常用的几个属性或方法(*号所标记是常用属性或方法):

· ctx.request:Koa的请求对象,一般不直接使用,通过别名引用来访问。

· ctx.response:Koa的响应对象,一般不直接使用,通过别名引用来访问。

· *ctx.state:自定义数据存储,比如中间件需要往请求中挂载变量就可以存放在ctx.state中,后续中间件可以读取。

· *ctx.throw():抛出HTTP异常。

· ctx.headers:请求报头,ctx.request.headers的别名。

· ctx.method:请求方法,ctx.request.method的别名。

· ctx.url:请求链接,ctx.request.url的别名。

· ctx.path:请求路径,ctx.request.path的别名。

· *ctx.query:解析后的GET参数对象,ctx.request.query的别名。

· ctx.host:当前域名,ctx.request.host的别名。

· *ctx.ip:客户端IP,ctx.request.ip的别名。

· ctx.ips:反向代理环境下的客户端IP列表,ctx.request.ips的别名。

· ctx.get():读取请求报头,ctx.request.get的别名。

· *ctx.body:响应内容,支持字符串、对象、Buffer,ctx.response.body的别名。

· *ctx.status:响应状态码,ctx.response.status的别名。

· ctx.type:响应体类型,ctx.response.type的别名。

· *ctx.redirect():重定向,ctx.response.redirect的别名。

· *ctx.set():设置响应报头,ctx.response.set的别名。

以下是一个显示当前请求信息并添加自定义响应报头的示例。

访问http://localhost:10000/?a=1&b=2,浏览器响应如下JSON: