-1

我想ctx.request.body从没有正文解析器中间件的帖子中阅读。

const Koa = require('koa');
const Router = require('koa-router');
const app = new Koa();
const router = new Router();
app.use(router.routes());

router.post('/publish', async (ctx, next) => {
  let msg = JSON.stringify(ctx.request.body);
  console.log(msg); //undefined
  console.log(ctx.request.body); //undefined
  console.log(ctx.req.body);  //undefined
});

app.listen(process.env.PORT);

使用curl -X POST -H "Content-Type: application/json" -d '{"key":"val"}' 'http://localhost:8080/publish'我得到 3 个未定义。

我该如何解决这个问题?我知道 koa 无法解析req.body,但为什么不起作用JSON.stringify(ctx.request.body)

4

1 回答 1

0

JSON.stringify(ctx.request.body)不起作用,因为只有在您使用可用的正文解析器之一时才会设置它。因此,如果您不想使用 body-parser(或任何其他 body-parser 中间件),则必须自己解析 body req.body

但老实说,您为什么不想使用现有解决方案之一来解决您的问题?

于 2017-03-29T10:47:03.247 回答