在 Koa2 中,Context(Context.prototype) 是每个 HTTP 请求的上下文对象。它封装了 Node.js 的 request 和 response 对象,并提供了一些有用的方法和属性。
Context 对象的组成部分
Context 对象由三个主要组件组成:
Context.req
:Node.js 的 request 对象Context.res
:Node.js 的 response 对象Context.request
:Koa 中的 Request 对象Context.response
:Koa 中的 Response 对象
同时,Context 对象也添加了一些额外的方法和属性。
Context 对象提供的方法和属性
Context.req 和 Context.res
这两个属性直接暴露了 Node.js 的 request 和 response 对象。
-- -------------------- ---- ------- ----- --- - --------------- ----- --- - --- ------ ------------- ----- -- - ------------------ - ---- --------------------------------- -------------- -------------------- --------- -------------- --- -----------------
Context.request 和 Context.response
Context.request
Context.request
用来代理 Koa 的 Request 对象,提供了一些有用的属性和方法。
Context.request.method
HTTP 请求的方法名。
-- -------------------- ---- ------- ----- --- - --------------- ----- --- - --- ------ ------------- ----- -- - -------------------------------- -- --- ------- --- -----------------
Context.request.path 和 Context.request.query
Context.request.path
获取 URL 的 pathname,Context.request.query
获取查询字符串。
-- -------------------- ---- ------- ----- --- - --------------- ----- --- - --- ------ ------------- ----- -- - ------------------------------ -- ---- ------------------------------- -- - --- ----- - ------- --- -----------------
Context.request.headers
返回 HTTP 请求的头部对象。
-- -------------------- ---- ------- ----- --- - --------------- ----- --- - --- ------ ------------- ----- -- - --------------------------------- -- - ------------- ------ --- - ------- --- -----------------
Context.response
Context.response
用来代理 Koa 的 Response 对象,提供了一些有用的属性和方法。
Context.response.body 和 Context.response.status
Context.response.body
用来设置 HTTP 响应的 body,Context.response.status
用来设置 HTTP 响应的状态码。
-- -------------------- ---- ------- ----- --- - --------------- ----- --- - --- ------ ------------- ----- -- - ----------------- - ------ -------- ------------------- - ---- --- -----------------
Context.response.set 和 Context.response.get
Context.response.set(name, value)
用来设置 HTTP 响应的头部信息,Context.response.get(name)
用来获取 HTTP 响应头的值。
-- -------------------- ---- ------- ----- --- - --------------- ----- --- - --- ------ ------------- ----- -- - -------------------------------- -------------- ---------------------------------------------- -- ---------- --- -----------------
Context 对象的其他方法和属性
Context.cookies
Context.cookies
用来获取 HTTP 请求的 cookie,同时还提供了一些设置 cookie 的方法。
-- -------------------- ---- ------- ----- --- - --------------- ----- --- - --- ------ ------------- ----- -- - ------------------------------------- -- --- ----------------------- ------- --- -----------------
Context.throw 和 Context.assert
Context.throw
用来抛出一个常规的错误,Context.assert
用来抛出一个 HTTP 异常。
-- -------------------- ---- ------- ----- --- - --------------- ----- --- - --- ------ ------------- ----- -- - -- ----------------------- - -------------- --- -- ----------- -- --- ----- --- --------- -- ---------- - ------- --- -----------------
总结
在 Koa2 中,Context 对象是非常重要的。它提供了很多有用的方法和属性,可以让我们轻松地操作 HTTP 请求和响应。
它的方法和属性都非常简单易用,但是却能实现很多功能。我们可以根据需求自由组合使用,从而构建出一个强大的 HTTP 服务。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6457af34968c7c53b0a4f04a