【发布时间】:2016-10-14 06:06:06
【问题描述】:
我正在使用 expressjs 和 body-parser 中间件。
这就是我启动它的方式:
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
我正在从客户端发送一个 DELETE 请求,当我尝试从服务器端获取它时,我得到一个空对象:
app.delete('/', function(req, res) {
console.log(util.inspect(req.body)); //outputs {}
//some more code
});
但是,当我通过 POST 发送它时,我得到了我需要的东西:
app.post('/delete', function(req, res) {
console.log(util.inspect(req.body)); //outputs { mid: 'ffw1aNh2' }
//some more code
});
值得注意的是,我没有在客户端 (angularjs) 上进行任何更改,但方法和 url 以及 firefox 网络调试器显示了两种情况下正在发送的数据。
这里缺少什么?为什么我在 delete 方法上得到一个空的 body 对象?
【问题讨论】:
-
This 可能感兴趣。
-
这并不能真正帮助我理解。它在那里说 DELETE 请求有一个主体,而且,它没有被劝阻或禁止。所以更有理由认为 body 对象不应该为空,不是吗?
-
body-parser不关心 AFAIK 使用的 HTTP 方法,它应该与DELETE一起工作得很好。 request 的Content-Type标头看起来没问题吗? -
现在我检查了,有区别。当我使用 POST 时,内容类型是
application/json,而使用 DELETE 时,它是text/plain -
@TomKlino 那是你的问题 :)
body-parser只查找 JSON 或 URL 编码的正文数据,而不是text/plain。
标签: node.js express http-delete body-parser