我正在为Mailgun编写一个Web钩子监听器,经过几次尝试,我意识到我的问题是Mailgun可以使用multipart或x-www-form-urlencoded内容类型发布webhook。
这是我目前使用Multer的代码(可以处理多部分但无法处理x-www-form-urlencoded),我也尝试使用BodyParser(处理x-www-form-urlencoded但不处理multipart)。
我的问题很简单:我应该怎么做才能在我的webhook监听器上支持这两种内容类型方法?
var express = require('express');
var multer = require('multer');
var app = express();
app.set('port', process.env.PORT || 3000);
app.post('/parse', multer().any(), function (req, res) {
var contentType = req.get('Content-Type');
console.log(contentType);
res.sendStatus(200);
});
var server = app.listen(app.get('port'), function() {
console.log('Listening on port %d', server.address().port);
});
答案 0 :(得分:0)
经过一些研究后,我设法使用express-busboy来解决这个问题,它基本上运行在busboy-connect之上,并且可以解析这两种内容类型。
var express = require('express');
var busboy = require('express-busboy');
var app = express();
busboy.extend(app, {
upload: true,
path: '/uploads',
allowedPath: /./
});
app.set('port', process.env.PORT || 3000);
app.post('/parse', function (req, res) {
console.log(req);
console.log(req.body);
console.log(req.files);
res.sendStatus(200);
});
var server = app.listen(app.get('port'), function() {
console.log('Listening on port %d', server.address().port);
});