thinknode
Version:
A fast, flexible and all-in-one web framework for node.js.
76 lines (56 loc) • 2.72 kB
JavaScript
;
exports.__esModule = true;
var _promise = require('babel-runtime/core-js/promise');
var _promise2 = _interopRequireDefault(_promise);
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
var _inherits2 = require('babel-runtime/helpers/inherits');
var _inherits3 = _interopRequireDefault(_inherits2);
var _querystring = require('querystring');
var _querystring2 = _interopRequireDefault(_querystring);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var _class = function (_THINK$Middleware) {
(0, _inherits3.default)(_class, _THINK$Middleware);
function _class() {
(0, _classCallCheck3.default)(this, _class);
return (0, _possibleConstructorReturn3.default)(this, _THINK$Middleware.apply(this, arguments));
}
_class.prototype.run = function run(data) {
var _this2 = this;
if (!this.http.req.readable) {
return _promise2.default.resolve();
}
return this.http.getPayload().then(function (payload) {
//解析提交的json数据
var types = THINK.config('post_json_content_type');
var datas = {};
var contentType = _this2.http.type();
if (types.indexOf(contentType) > -1) {
try {
datas = JSON.parse(payload);
} catch (e) {
THINK.log('JSON.parse error, payload is not a valid JSON data', 'WARNING');
//if using json parse error, then use querystring parse.
//sometimes http header has json content-type, but payload data is querystring data
datas = _querystring2.default.parse(payload);
}
}
//querystring.parse解析
if (contentType && contentType.indexOf('application/x-www-form-urlencoded') > -1) {
datas = THINK.extend(datas, _querystring2.default.parse(payload));
}
_this2.http._post = datas;
return _promise2.default.resolve(data);
});
};
return _class;
}(THINK.Middleware); /**
* payload解析中间件
* @author richen
* @copyright Copyright (c) 2015 - <richenlin(at)gmail.com>
* @license MIT
* @version 15/11/19
*/
exports.default = _class;