本站由axios爱好者共建,部署在vultr vps上,推荐使用vultr!价格实惠,实力雄厚。
                  最近新注册用户充值$25,可额外获赠$50,搭建博客必备。
                  前往注册 
                
                
                 
                  udemy web开发课程,涵盖angular、vue和react,共17门,几十G课程网盘观看
                  前往领取 
                
               
                欢迎使用 axios,本文档将帮助您快速上手。(troubleshooting.html) 中的解答,
什么是 axios? Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中。
axios 
Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中。 
特性 
浏览器支持 
 
 
Latest ✔ 
Latest ✔ 
Latest ✔ 
Latest ✔ 
Latest ✔ 
8+ ✔ 
 
 
安装 使用 npm: 
使用 bower: 
使用 cdn: 
<script  src ="https://unpkg.com/axios/dist/axios.min.js" > </script > 
案例 执行 GET 请求 
axios.get('/user?ID=12345' )   .then(function  (response )      console .log(response);   })   .catch(function  (error )      console .log(error);   }); axios.get('/user' , {     params: {       ID: 12345      }   })   .then(function  (response )      console .log(response);   })   .catch(function  (error )      console .log(error);   }); 
执行 POST 请求 
axios.post('/user' , {     firstName: 'Fred' ,     lastName: 'Flintstone'    })   .then(function  (response )      console .log(response);   })   .catch(function  (error )      console .log(error);   }); 
执行多个并发请求 
function  getUserAccount (  return  axios.get('/user/12345' ); } function  getUserPermissions (  return  axios.get('/user/12345/permissions' ); } axios.all([getUserAccount(), getUserPermissions()])   .then(axios.spread(function  (acct, perms )         })); 
axios API 可以通过向 axios 传递相关配置来创建请求
axios(config) axios({   method: 'post' ,   url: '/user/12345' ,   data: {     firstName: 'Fred' ,     lastName: 'Flintstone'    } }); 
axios({   method:'get' ,   url:'http://bit.ly/2mTM3nY' ,   responseType:'stream'  })   .then(function (response )    response.data.pipe(fs.createWriteStream('ada_lovelace.jpg' )) }); 
axios(url[, config]) 请求方法的别名 为方便起见,为所有支持的请求方法提供了别名 
axios.request(config) axios.get(url[, config]) axios.delete(url[, config]) axios.head(url[, config]) axios.options(url[, config]) axios.post(url[, data[, config]]) axios.put(url[, data[, config]]) axios.patch(url[, data[, config]]) 注意 在使用别名方法时, url、method、data 这些属性都不必在配置中指定。 
并发 处理并发请求的助手函数 
axios.all(iterable) axios.spread(callback) 创建实例 可以使用自定义配置新建一个 axios 实例 
axios.create([config]) const  instance = axios.create({  baseURL: 'https://some-domain.com/api/' ,   timeout: 1000 ,   headers: {'X-Custom-Header' : 'foobar' } }); 
实例方法 以下是可用的实例方法。指定的配置将与实例的配置合并。
axios#request(config) axios#get(url[, config]) axios#delete(url[, config]) axios#head(url[, config]) axios#options(url[, config]) axios#post(url[, data[, config]]) axios#put(url[, data[, config]]) axios#patch(url[, data[, config]]) 请求配置 这些是创建请求时可以用的配置选项。只有 url 是必需的。如果没有指定 method,请求将默认使用 get 方法。 
{       url: '/user' ,      method: 'get' ,          baseURL: 'https://some-domain.com/api/' ,            transformRequest: [function  (data, headers )           return  data;   }],      transformResponse: [function  (data )           return  data;   }],      headers: {'X-Requested-With' : 'XMLHttpRequest' },         params: {     ID: 12345    },          paramsSerializer: function (params )      return  Qs.stringify(params, {arrayFormat : 'brackets' })   },                     data: {     firstName: 'Fred'    },         timeout: 1000 ,       withCredentials: false ,          adapter: function  (config )         },        auth: {     username: 'janedoe' ,     password: 's00pers3cret'    },       responseType: 'json' ,          responseEncoding: 'utf8' ,        xsrfCookieName: 'XSRF-TOKEN' ,       xsrfHeaderName: 'X-XSRF-TOKEN' ,        onUploadProgress: function  (progressEvent )         },      onDownloadProgress: function  (progressEvent )         },       maxContentLength: 2000 ,      validateStatus: function  (status )      return  status >= 200  && status < 300 ;    },         maxRedirects: 5 ,                socketPath: null ,          httpAgent: new  http.Agent({ keepAlive : true  }),   httpsAgent: new  https.Agent({ keepAlive : true  }),            proxy: {     host: '127.0.0.1' ,     port: 9000 ,     auth: {       username: 'mikeymike' ,       password: 'rapunz3l'      }   },         cancelToken: new  CancelToken(function  (cancel )    }) } 
响应结构 某个请求的响应包含以下信息 
{      data: {},      status: 200 ,      statusText: 'OK' ,      headers: {},       config: {},              request: {} } 
使用 then 时,你将接收下面这样的响应 :
axios.get('/user/12345' )   .then(function (response )      console .log(response.data);     console .log(response.status);     console .log(response.statusText);     console .log(response.headers);     console .log(response.config);   }); 
在使用 catch 时,或传递 rejection callback  作为 then 的第二个参数时,响应可以通过 error 对象可被使用,正如在错误处理 这一节所讲。 
配置默认值 你可以指定将被用在各个请求的配置默认值 
全局的 axios 默认值 axios.defaults.baseURL = 'https://api.example.com' ; axios.defaults.headers.common['Authorization' ] = AUTH_TOKEN; axios.defaults.headers.post['Content-Type' ] = 'application/x-www-form-urlencoded' ; 
自定义实例默认值 const  instance = axios.create({  baseURL: 'https://api.example.com'  }); instance.defaults.headers.common['Authorization' ] = AUTH_TOKEN; 
配置的优先顺序 配置会以一个优先顺序进行合并。这个顺序是:在 lib/defaults.js 找到的库的默认值,然后是实例的 defaults 属性,最后是请求的 config 参数。后者将优先于前者。这里是一个例子: 
var  instance = axios.create();instance.defaults.timeout = 2500 ; instance.get('/longRequest' , {   timeout: 5000  }); 
拦截器 在请求或响应被 then 或 catch 处理前拦截它们。 
axios.interceptors.request.use(function  (config )           return  config;   }, function  (error )           return  Promise .reject(error);   }); axios.interceptors.response.use(function  (response )           return  response;   }, function  (error )           return  Promise .reject(error);   }); 
如果你想在稍后移除拦截器,可以这样: 
const  myInterceptor = axios.interceptors.request.use(function  (axios.interceptors.request.eject(myInterceptor); 
可以为自定义 axios 实例添加拦截器 
const  instance = axios.create();instance.interceptors.request.use(function  ( 
错误处理 axios.get('/user/12345' )   .catch(function  (error )      if  (error.response) {                     console .log(error.response.data);       console .log(error.response.status);       console .log(error.response.headers);     } else  if  (error.request) {                            console .log(error.request);     } else  {              console .log('Error' , error.message);     }     console .log(error.config);   }); 
Y可以使用 validateStatus 配置选项定义一个自定义 HTTP 状态码的错误范围。 
axios.get('/user/12345' , {   validateStatus: function  (status )      return  status < 500 ;    } }) 
取消 使用 cancel token  取消请求
Axios 的 cancel token API 基于cancelable promises proposal ,它还处于第一阶段。 
 
可以使用 CancelToken.source 工厂方法创建 cancel token,像这样: 
const  CancelToken = axios.CancelToken;const  source = CancelToken.source();axios.get('/user/12345' , {   cancelToken: source.token }).catch(function (thrown )    if  (axios.isCancel(thrown)) {     console .log('Request canceled' , thrown.message);   } else  {         } }); axios.post('/user/12345' , {   name: 'new name'  }, {   cancelToken: source.token }) source.cancel('Operation canceled by the user.' ); 
还可以通过传递一个 executor 函数到 CancelToken 的构造函数来创建 cancel token: 
const  CancelToken = axios.CancelToken;let  cancel;axios.get('/user/12345' , {   cancelToken: new  CancelToken(function  executor (c )           cancel = c;   }) }); cancel(); 
注意: 可以使用同一个 cancel token 取消多个请求 
 
使用 application/x-www-form-urlencoded format 默认情况下,axios将JavaScript对象序列化为JSON。 要以application / x-www-form-urlencoded格式发送数据,您可以使用以下选项之一。
浏览器 在浏览器中,您可以使用URLSearchParams API,如下所示:
const  params = new  URLSearchParams();params.append('param1' , 'value1' ); params.append('param2' , 'value2' ); axios.post('/foo' , params); 
请注意,所有浏览器都不支持URLSearchParams(请参阅caniuse.com),但可以使用polyfill(确保填充全局环境)。
 
或者,您可以使用qs库编码数据:
const  qs = require ('qs' );axios.post('/foo' , qs.stringify({ 'bar' : 123  })); 
或者以另一种方式(ES6),
import  qs from  'qs' ;const  data = { 'bar' : 123  };const  options = {  method: 'POST' ,   headers: { 'content-type' : 'application/x-www-form-urlencoded'  },   data: qs.stringify(data),   url, }; axios(options); 
Node.js 在node.js中,您可以使用querystring模块,如下所示:
const  querystring = require ('querystring' );axios.post('http://something.com/' , querystring.stringify({ foo : 'bar'  })); 
您也可以使用qs库。
Semver 在axios达到1.0版本之前,破坏性更改将以新的次要版本发布。 例如0.5.1和0.5.4将具有相同的API,但0.6.0将具有重大变化。
Promises axios 依赖原生的 ES6 Promise 实现而被支持 . 如果你的环境不支持 ES6 Promise,你可以使用 polyfill . 
TypeScript axios包括TypeScript定义。import  axios from  'axios' ;axios.get('/user?ID=12345' ); 
资源 
Credits axios深受Angular提供的、\$http服务的启发。 最终,axios是为了在Angular之外使用而提供独立的类似\$http服的务。
协议 MIT