UNPKG

thinknode

Version:

A fast, flexible and all-in-one web framework for node.js.

76 lines (56 loc) 2.72 kB
'use strict'; 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;