在 Koa.js 中,上下文(Context)是一个代表当前请求和响应的对象,它在每个中间件函数中作为第一个参数传递。上下文对象(ctx
)包含了请求信息、响应信息和一些其他有用的属性和方法。
上下文对象(ctx
)具有以下常用属性和方法:
ctx.request
:表示客户端请求的对象,包含了请求的方法、URL、头部和主体等信息。ctx.response
:表示服务器发送的响应对象,包含了响应的状态、头部和主体等信息。ctx.state
:用于在中间件之间共享数据的对象。可以将一些共享的状态存储在ctx.state
中,供后续的中间件使用。ctx.params
:表示请求的路由参数的对象,例如/:id
路径中的id
参数可以通过ctx.params.id
访问到。ctx.query
:表示请求的查询参数的对象,例如在/?name=John
URL 中的name
参数可以通过ctx.query.name
访问到。ctx.cookies
:用于读取和设置请求的 Cookie。ctx.throw()
:用于抛出一个 HTTP 错误,例如ctx.throw(404, 'Not Found')
。ctx.redirect()
:用于重定向到指定的 URL。
在中间件之间共享数据的方式是通过上下文对象的 ctx.state
属性。可以将需要共享的数据存储在 ctx.state
中,然后在后续的中间件中通过 ctx.state
访问和使用这些数据。例如:
在上面的例子中,第一个中间件函数将用户对象存储在 ctx.state.user
中,然后在第二个中间件函数中通过 ctx.state.user.name
访问并使用这个数据。
通过上下文对象和 ctx.state
属性,可以实现中间件之间的数据共享,使得开发者能够在请求处理的不同阶段访问和操作相同的数据。