UNPKG

axios

Version:

Promise based HTTP client for the browser and node.js

82 lines (71 loc) 2.04 kB
var Promise = require('es6-promise').Promise; var defaults = require('./defaults'); var utils = require('./utils'); var spread = require('./spread'); var axios = module.exports = function axios(config) { config = utils.merge({ method: 'get', transformRequest: defaults.transformRequest, transformResponse: defaults.transformResponse }, config); // Don't allow overriding defaults.withCredentials config.withCredentials = config.withCredentials || defaults.withCredentials; var promise = new Promise(function (resolve, reject) { try { // For browsers use XHR adapter if (typeof window !== 'undefined') { require('./adapters/xhr')(resolve, reject, config); } // For node use HTTP adapter else if (typeof process !== 'undefined') { require('./adapters/http')(resolve, reject, config); } } catch (e) { reject(e); } }); // Provide alias for success promise.success = function success(fn) { promise.then(function(response) { fn(response); }); return promise; }; // Provide alias for error promise.error = function error(fn) { promise.then(null, function(response) { fn(response); }); return promise; }; return promise; }; // Expose defaults axios.defaults = defaults; // Expose all/spread axios.all = Promise.all; axios.spread = spread; // Provide aliases for supported request methods createShortMethods('delete', 'get', 'head'); createShortMethodsWithData('post', 'put', 'patch'); function createShortMethods() { utils.forEach(arguments, function (method) { axios[method] = function (url, config) { return axios(utils.merge(config || {}, { method: method, url: url })); }; }); } function createShortMethodsWithData() { utils.forEach(arguments, function (method) { axios[method] = function (url, data, config) { return axios(utils.merge(config || {}, { method: method, url: url, data: data })); }; }); }