刚迁移到ember-cli 0.1.12,现在http-mock对我不起作用。
它的工作正常,以获取请求。 request.query返回所有查询参数。
但是对于POST请求,我无法将请求参数作为request.body未定义。
有人可以告诉我如何在ember http-mock中访问请求体吗?
答案 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现在应该工作,不再是未定义的。