请说明在 Koa 框架中实现请求重定向的常见方式,并简述其使用场景。
考察说明
考查对 Koa 框架中重定向 API 的掌握程度及实际应用理解。
回答思路
- 【回答框架 1】Koa 中实现请求重定向主要通过上下文对象 ctx 的 redirect 方法。该方法接收一个目标 URL 作为参数,并可选地设置状态码,默认状态码为 302。调用 ctx.redirect('/path') 即可让客户端跳转到指定路径。
- 【回答框架 2】使用场景包括:用户登录后跳转到原页面、表单提交后跳转避免重复提交、以及将旧路径重定向到新路径以保持链接有效。
- 【回答框架 3】重定向也可以手动设置状态码和 Location 头实现,例如 ctx.status = 301 并设置 ctx.set('Location', '/new-path'),这适用于需要永久重定向或自定义响应头的情况。
- 【回答框架 4】在异步中间件中,redirect 方法可以在任何需要的地方调用,但需要注意在响应发送前执行,否则会抛出错误。
- 【关键点 1】ctx.redirect(url) 默认返回 302 临时重定向。
- 【关键点 2】可通过 ctx.status 自定义状态码,如 301 永久重定向。
- 【关键点 3】重定向必须在响应头发送前调用,否则报错。
- 【关键点 4】手动设置 Location 头也是一种替代方案。
- 【易错点 1】重定向目标如果包含中文或特殊字符,需要先进行 URL 编码,否则可能导致跳转失败。
- 【易错点 2】在重定向后继续执行后续中间件不会影响已发送的响应,但可能造成逻辑混乱。