Koa JS配置koa-bodyparser后仍无法访问request.body对象该如何处理
Koa注册koa-bodyparser后仍无法获取请求body的解决方案
1. 校验Postman请求配置
90%以上的该类问题都是请求配置错误导致的,按以下要求检查配置:
- 进入
Body选项卡,选中raw格式后,右侧下拉菜单必须选择JSON,该操作会自动在请求头添加Content-Type: application/json,koa-bodyparser默认仅解析带该请求头的JSON请求 - 确认填写的请求体是合法JSON格式,无引号不匹配、尾逗号等语法错误
2. 校验代码获取方式
koa-bodyparser解析完成的请求体默认挂载在ctx.request.body属性上,注意和代表响应体的ctx.body区分,修改路由代码测试:
router.post("/", async (ctx) => { // 打印解析后的JSON请求体 console.log(ctx.request.body); // 可将请求体返回给前端,方便校验 ctx.body = { code: 200, data: ctx.request.body } });
3. 中间件配置兜底
如果以上步骤执行后仍无法获取,可以调整koa-bodyparser的配置,扩展支持的解析类型、放宽限制:
app.use(bodyParser({ // 支持解析json、表单、文本类型的请求体 enableTypes: ["json", "form", "text"], // 调整JSON请求体的大小限制,避免大请求被拦截 jsonLimit: "10mb", // 可选配置:对指定路径强制走JSON解析,适配特殊请求场景 detectJSON: function (ctx) { return ctx.path === '/' } }));
内容的提问来源于stack exchange,提问作者Zain Ahmad
相关产品推荐
相关产品推荐

