Koa2请求体为空

5

这个问题很旧,这里使用的库极有可能已经过时了,但解决方案仍然正确,请使用最新的版本。

我正在使用koa2和node6开发一个web服务,我的koa依赖如下:

"koa": "^2.0.0-alpha.4",
"koa-async-body": "^1.0.4",
"koa-bodyparser": "^3.2.0",
"koa-logger": "^1.3.0",
"koa-router": "^7.0.1",

我的实现方式如下:

const apiPrefix = 'api',
      apiParent = 'auth',
      api = 'register',
      router = new Router();

router.prefix(`/${apiPrefix}/${apiParent}/${api}`);

router.post('/', async(context, next) => {
  try {
    console.log(context.request.body);
    context.body = await post(context.request.body);
    await next();
  } catch (err) {
    context.throw(500);
  }
});

在另一个类中,我将此路由绑定到应用程序。同时我已添加了以下代码将 bodyParser 添加到 Koa;
const app = new Koa();

app.use(bodyParser());

当我尝试记录请求体时,它是一个空对象。另一方面,在这个项目中,其他人使用这个设置运行良好。

我做错了什么?我是否在使用过时的依赖项?


1
你在bodyParser之后注册了路由吗? - Paweł Lula
是的,我实际上找到了问题所在。只是因为我忘记添加内容类型头部。 - Uğurcan Şengit
路由需要在bodyParser之前定义吗? - chovy
1个回答

10

在我的Postman请求中添加Content-type:application/json头部解决了这个问题。


3
添加 Content-type: application/json 并不能解决问题。我仍然遇到这个问题。 - Saleh Rezaei

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接