ember http-mock request.body未定义

时间:2015-02-04 18:11:28

标签: ember.js ember-cli

刚迁移到ember-cli 0.1.12,现在http-mock对我不起作用。

它的工作正常,以获取请求。 request.query返回所有查询参数。

但是对于POST请求,我无法将请求参数作为request.body未定义。

有人可以告诉我如何在ember http-mock中访问请求体吗?

2 个答案:

答案 0 :(得分:1)

正如我在问题跟踪器中所说,这是由于Ember CLI的更改,默认情况下删除了正文解析器,因为它会影响其他中间件。

我已经开了一个PR,并附有一些针对你案件的说明。 https://github.com/ember-cli/ember-cli/pull/3211

答案 1 :(得分:1)

我有同样的问题,req.body未定义。以下是我遵循的步骤:

1)安装body-parser

npm install body-parser

2)您需要为每个模拟文件指定它需要正文解析器。例如,我的/server/mocks/addresses.js现在是:

module.exports = function(app) {
  var express = require('express');
  var addressesRouter = express.Router();

  ...

  addressesRouter.post('/', function (req, res) {
    var address = req.body;
    address.id = addresses.length + 1;
    addresses.push(address);
    res.status(201).send({
      'address': address
    });
  });

  ...

    app.use('/api/addresses', require('body-parser').json(), addressesRouter);

所以基本上你需要将require('body-parser').json()的第二个(中间)参数添加到最终app.use

req.body现在应该工作,不再是未定义的。