请求主体在KOA中未定义

JavaScript KoaJS

宝儿

2020-03-30

我有像下面这样的KOA

var koa = require('koa'),
bodyParser = require('koa-body-parser'),
router = require('koa-router'),
app = koa();
app.use(router(app));
app.use(bodyParser());
app.post('http://localhost/get',getit);

function *getit(){
 console.log(this.req.body); //undefined
}

然后通过jquery ajax发送一个帖子要求:

 var xhr = $.ajax({
            type: 'POST',
            dataType: 'json',
            contentType: 'application/json',
            url: 'http://localhost/getit',
            data: {"name":"me"},
            success: function(response) {

            }
        });

但是在koa和this.req我找不到我的数据。在谷歌浏览器开发人员工具中,我可以看到标题,并且一切正常,但是我在koa中看不到它。

更新资料

正确的是:

   function *getit(){
 console.log(this.request.body); //undefined
}

第3846篇《请求主体在KOA中未定义》来自Winter(https://github.com/aiyld/aiyld.github.io)的站点

2个回答
小胖Gil 2020.03.30

根据评论,对我来说正确的是this.request.bodythis.req.body也不正确的。

神无 2020.03.30

koa按照初始化它们的顺序使用中间件。因此,如果您在bodyparser之前插入路由器,它将无法正常工作。由于您的请求不会在到达路由器中间件之前传递给解析器,因此不会解析该请求,并且koa将忽略request.body。因此订购非常重要。

问题类别

JavaScript Ckeditor Python Webpack TypeScript Vue.js React.js ExpressJS KoaJS CSS Node.js HTML Django 单元测试 PHP Asp.net jQuery Bootstrap IOS Android