axios使用详解

2018-07-11  本文已影响0人  skydu小杜

axios

基于Promise的HTTP请求客户端,可同时在浏览器和node.js中使用。

功能特性

  1. 在浏览器中发送XHLHttpRequests请求。
  2. 在node.js中发送http请求。
  3. 支持PromiseAPI。
  4. 拦截请求和相应。
  5. 转换请求和相应数据。
  6. 自动转换JSON数据。
  7. 客户端支持保护安全免受XSRF攻击。

axios创建实例

/**
 * Create an instance of Axios
 *
 * @param {Object} defaultConfig The default config for the instance
 * @return {Axios} A new instance of Axios
 */
function createInstance(defaultConfig) {
  var context = new Axios(defaultConfig);
  var instance = bind(Axios.prototype.request, context);

  // Copy axios.prototype to instance
  utils.extend(instance, Axios.prototype, context);

  // Copy context to instance
  utils.extend(instance, context);

  return instance;
}

axios实例方法

// Provide aliases for supported request methods
utils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {
  /*eslint func-names:0*/
  Axios.prototype[method] = function(url, config) {
    return this.request(utils.merge(config || {}, {
      method: method,
      url: url
    }));
  };
});

utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {
  /*eslint func-names:0*/
  Axios.prototype[method] = function(url, data, config) {
    return this.request(utils.merge(config || {}, {
      method: method,
      url: url,
      data: data
    }));
  };
});

请求配置

axios拦截器

function Axios(instanceConfig) {
  this.defaults = instanceConfig;
  this.interceptors = {
    request: new InterceptorManager(),
    response: new InterceptorManager()
  };
}

InterceptorManager.prototype.use = function use(fulfilled, rejected) {
  this.handlers.push({
    fulfilled: fulfilled,
    rejected: rejected
  });
  return this.handlers.length - 1;
};

在Axios中定义了this.interceptors对象,用来拦截request, response对象

上一篇 下一篇

猜你喜欢

热点阅读