在 Koa 中,ctx
是指 context
对象,它是请求与响应的上下文,封装了 request
和 response
。每当 Koa 收到一个 HTTP 请求时,都会为该请求创建一个 ctx
对象,ctx
使开发者可以通过它方便地获取请求信息并设置响应。
ctx
主要包含以下内容:
ctx.request
:封装了请求相关的信息,例如 URL、请求头、请求体等。ctx.response
:封装了响应相关的信息,用于设置 HTTP 响应的状态码、响应体等。ctx.state
:可以用于在中间件之间传递状态信息。ctx.body
:用于设置返回给客户端的响应体内容。ctx.status
:用于设置 HTTP 状态码。ctx.url
、ctx.method
:直接访问请求的 URL 和请求方法等信息。
ctx
结构示例:
//koa应用对象调用 use() 将该中间件添加到栈
app.use(async ctx => {// 获取请求信息console.log(ctx.method); // 获取请求方法 (GET, POST 等)console.log(ctx.url); // 获取请求的 URLconsole.log(ctx.request.body); // 获取请求体数据(需要中间件如 koa-body 解析)// 设置响应信息ctx.status = 200; // 设置状态码ctx.body = 'Hello Koa!'; // 设置响应体
});
常用 ctx
属性和方法:
-
ctx.request
:访问请求数据。ctx.request.body
:请求体(需要中间件如koa-body
解析)。ctx.request.query
:URL 查询字符串(例如?id=123
)。ctx.request.headers
:请求头信息。
-
ctx.response
:设置返回响应。ctx.body
:设置返回给客户端的内容(响应体)。ctx.status
:设置 HTTP 响应状态码。
-
其他常用属性:
ctx.method
:获取请求方法。ctx.url
:获取请求 URL。ctx.path
:获取请求路径(不含查询字符串)。ctx.query
:获取查询参数。ctx.state
:用于在多个中间件之间共享数据。
总结:
ctx
是 Koa 中用来在请求和响应之间传递信息的对象。通过它,开发者可以很方便地访问请求的各类信息并设置响应。