sails框架使用wechat 的時候能夠通過驗證卻不能處理微信消息义桂,原因是sails默認的bodyPaser(skipper)不支持'text/xml'形式的請求(sails issues#2714)
YunnuY同學使用pexpress-xml-bodyparser和body-parser覆蓋了sails默認的bodyParser
https://github.com/YunnuY/sweat/blob/master/config/http.js
由于body-paser后來更新修陡,所以這里的代碼要稍微修改一下,將
var bodyParser = require('body-parser')();
修改為
var bodyParser = require('body-parser')().json();
但是公司的項目中還有包含文件的請求聚假,此時body-paser就不能滿足需求了睹晒,因此還是要重新使用sails默認的skipper吃型,代碼如下:
bodyParser: function() {
var xmlParser = require('express-xml-bodyparser')();
var skipper = require('skipper')();
return function(req, res, next) {
if (req.headers && (req.headers['content-type'] == 'text/xml' ||
req.headers['content-type'] == 'application/xml')) {
return xmlParser(req, res, next);
}
return skipper(req, res, next);
};
}
目前程序能夠正常處理微信消息和常規(guī)請求坚俗,如果出現(xiàn)問題我會及時更新祸泪。