如何在Nuxt3中获取context的req及请求体?
在Nuxt3中获取请求体的正确方法
1. 使用官方推荐的useBody()组合式函数
Nuxt3内置了专门解析请求体的useBody(),无需手动处理原始req对象,直接调用即可拿到解析后的请求体:
// 页面、组件或自定义composable中 const body = await useBody() console.log(body)
⚠️ 注意:该方法是异步的,必须配合await使用,且仅能在服务端渲染(SSR)场景或Server路由中生效。
2. 在Server API路由中通过readBody()获取
如果是在server/api目录下的API接口中,可通过readBody()工具函数解析请求体:
// server/api/xxx.post.ts export default defineEventHandler(async (event) => { const body = await readBody(event) // 处理请求体逻辑 return { success: true, data: body } })
readBody()支持解析JSON、表单等多种格式的请求体,是处理API路由请求体的标准方式。
3. 服务器中间件中解析并共享请求体
若需要在全局中间件中统一处理请求体,可先解析后挂载到事件上下文:
// server/middleware/parse-body.ts export default defineEventHandler(async (event) => { const body = await readBody(event) event.context.requestBody = body })
后续在页面或API路由中,可通过event.context.requestBody直接获取已解析的请求体。
为什么之前的方法返回undefined?
Nuxt3中的req是原始Node.js请求对象,默认不会自动解析请求体,因此直接访问req.body会得到undefined,必须使用官方提供的解析函数完成请求体的解析工作。
内容的提问来源于stack exchange,提问作者Yumi Park
相关产品推荐
相关产品推荐

