提交 cd221704 编写于 作者: M Matt Zabriskie

Adding transformers

上级 28073866
此差异已折叠。
......@@ -2,7 +2,9 @@ var Promise = require('es6-promise').Promise;
function axios(options) {
options = merge({
method: 'get'
method: 'get',
transformRequest: defaults.transformRequest,
transformResponse: defaults.transformResponse
}, options);
var promise = new Promise(function (resolve, reject) {
......@@ -10,7 +12,7 @@ function axios(options) {
function onload() {
if (request.status >= 200 && request.status < 300) {
resolve(parse(request.responseText));
resolve(transformData(request.responseText, options.headers, options.transformResponse));
} else {
onerror();
}
......@@ -41,13 +43,15 @@ function axios(options) {
);
for (var key in headers) {
request.setRequestHeader(key, headers[key]);
if (headers.hasOwnProperty(key)) {
request.setRequestHeader(key, headers[key]);
}
}
} catch (e) {
reject(e);
}
request.send(options.data ? JSON.stringify(options.data) : null);
request.send(transformData(options.data, options.headers, options.transformRequest));
});
promise.success = function (fn) {
......@@ -69,6 +73,14 @@ function axios(options) {
var CONTENT_TYPE_APPLICATION_JSON = {'Content-Type': 'application/json;charset=utf-8'};
var defaults = axios.defaults = {
transformRequest: [function (data) {
return data ? JSON.stringify(data) : null;
}],
transformResponse: [function (data) {
return parse(data);
}],
headers: {
common: {'Accept': 'application/json, text/plain, */*'},
patch: merge(CONTENT_TYPE_APPLICATION_JSON),
......@@ -77,6 +89,18 @@ var defaults = axios.defaults = {
}
};
function transformData(data, headers, fns) {
if (typeof fns === 'function') {
return fns(data, headers);
}
forEach(fns, function (fn) {
data = fn(data, headers);
});
return data;
}
function parse(response) {
try {
return JSON.parse(response);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册