Blogger Information
Blog 33
fans 0
comment 0
visits 49962
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
Axios.js 基本用法
Lon
Original
16624 people have browsed it

Axios.js 基本用法

了解更多请访问http://www.axios-js.com/zh-cn/

一、什么是axios.js

  • axios.js 是一个基于 promise 的 HTTP 库,支持浏览器和 Node 环境;
  • 说明白点,就是使用这个库来执行 Ajax 请求,获取 JSON 数据;
  • 我们可以利用 axios 可以发送 get、post 等一系列请求,然后得到数据;

二、特性

  • 从浏览器中创建 XMLHttpRequests
  • 从 node.js 创建 http 请求
  • 支持 Promise API
  • 拦截请求和响应
  • 转换请求数据和响应数据
  • 取消请求
  • 自动转换 JSON 数据
  • 客户端支持防御 XSRF

三、安装

安装方式,提供两种常用的,一种在 node 下运行,另一种在浏览器下运行;

1、使用 npm 在命令行运行如下命令,加载需要的包

  1. npm install axios

实例

  1. //引入axios
  2. const axios = require('axios');
  3. //使用get请求获取数据
  4. axios.get('https://unpkg.com/axios/dist/axios.min.js')
  5. .then(res => {
  6. console.log(res.data)
  7. })
  8. .catch(err => {
  9. console.log('错误' + err)
  10. })

2、如果要在浏览器使用 axios,直接可以使用 cdn 地址加载即可

  1. <script src="https://unpkg.com/axios/dist/axios.min.js"></script>

实例

  1. <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
  2. <script>
  3. //使用 get 请求获取远程数据,浏览器执行远程 Ajax 请求会有跨域问题
  4. axios.get('https://jsonplaceholder.typicode.com/posts')
  5. .then(res => {
  6. console.log(res.data)
  7. })
  8. .catch(err => {
  9. console.log('错误' + err)
  10. })
  11. </script>

四、请求配置

这些是创建请求时可以用的配置选项。只有 url 是必需的。如果没有指定 method,请求将默认使用 get 方法。

  1. //常用的配置项
  2. {
  3. // `url` 是用于请求的服务器 URL
  4. url: '/user',
  5. // `method` 是创建请求时使用的方法
  6. method: 'get', // default
  7. // `baseURL` 将自动加在 `url` 前面,除非 `url` 是一个绝对 URL。
  8. // 它可以通过设置一个 `baseURL` 便于为 axios 实例的方法传递相对 URL
  9. baseURL: 'https://some-domain.com/api/',
  10. // `headers` 是即将被发送的自定义请求头
  11. headers: {'X-Requested-With': 'XMLHttpRequest'},
  12. // `params` 是即将与请求一起发送的 URL 参数
  13. // 必须是一个无格式对象(plain object)或 URLSearchParams 对象
  14. params: {
  15. id: 12345
  16. },
  17. // `data` 是作为请求主体被发送的数据
  18. // 只适用于这些请求方法 'PUT', 'POST', 和 'PATCH'
  19. data: {
  20. name: 'lisi'
  21. },
  22. }

全局的 axios 默认值

全局属性配置,即将属性中大量重复的内容抽离出来单独设置;

  1. axios.defaults.baseURL = 'https://jsonplaceholder.typicode.com';

实例

  1. <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
  2. <script>
  3. //全局默认值设置,baseUrl 会自动在 url 前面添加
  4. axios.defaults.baseURL = 'https://jsonplaceholder.typicode.com';
  5. axios({
  6. url:'/posts',
  7. method:'get',
  8. params : {
  9. userId : 1,
  10. id : 1
  11. }
  12. }).then(res => {
  13. console.log(res.data)
  14. })
  15. </script>

五、并发操作

1、如果项目中可能会产生多个异步请求,它们会根据耗时长短来执行;

2、我们如果想让所有的异步请求后,按照指定的顺序进行执行,可以使用处理并发请求的助手函数

  • axios.all(iterable)
  • axios.spread(callback)

实例

  1. <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
  2. <script>
  3. //全局默认值设置,baseUrl 会自动在 url 前面添加
  4. axios.defaults.baseURL = 'https://jsonplaceholder.typicode.com';
  5. axios.all([
  6. axios({
  7. url: 'users',
  8. data: '1.异步'
  9. }),
  10. axios({
  11. url: 'users',
  12. data: '2.异步'
  13. }),
  14. axios({
  15. url: 'users',
  16. data: '3.异步'
  17. })
  18. ]).then(value => {
  19. for (let i = 0; i < value.length; i++) {
  20. console.log(value[i].config.data)
  21. }
  22. })
  23. </script>

上面循环获取相应的值,比较麻烦,所以 axios 提供了另一个解决方案

  1. <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
  2. <script>
  3. //全局默认值设置,baseUrl 会自动在 url 前面添加
  4. axios.defaults.baseURL = 'https://jsonplaceholder.typicode.com';
  5. axios.all([
  6. axios({
  7. url: 'users',
  8. data: '1.异步'
  9. }),
  10. axios({
  11. url: 'users',
  12. data: '2.异步'
  13. }),
  14. axios({
  15. url: 'users',
  16. data: '3.异步'
  17. })
  18. ]).then(axios.spread((res1 , res2 , res3) => {
  19. console.log(res1.config.data)
  20. console.log(res2.config.data)
  21. console.log(res3.config.data)
  22. }))
  23. <script>

六、实例化

实例化,顾名思义就是 new 出一个对象来,这样这个对象具有独立性不被干扰;

可以使用自定义配置新建一个 axios 实例

实例

  1. <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
  2. <script>
  3. //自定义实例化对象
  4. const myAxios = axios.create();
  5. myAxios.defaults.baseURL = 'https://jsonplaceholder.typicode.com';
  6. myAxios({
  7. url : 'users'
  8. }).then(res => console.log(res.data))
  9. </script>

七、实例方法

以下是可用的实例方法。指定的配置将与实例的配置合并。

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]])
实例
  1. <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
  2. <script>
  3. axios.defaults.baseURL = 'https://jsonplaceholder.typicode.com';
  4. //request请求 通用
  5. axios.request({
  6. method : 'get',
  7. url : 'users'
  8. }).then(res => console.log(res.data))
  9. </script>

八、拦截器

1、所谓拦截操作,就是在 Ajax 获取数据之前先拦截处理一些事务的操作;

2、这些操作包括:修改 axios 配置信息,loading,判断验证跳转等等;

3、拦截处理完毕之后,再通过 return 返回基础处理即可;

  1. <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
  2. <script>
  3. //自定义实例化对象
  4. const myAxios = axios.create();
  5. myAxios.defaults.baseURL = 'https://jsonplaceholder.typicode.com';
  6. // 添加请求拦截器
  7. myAxios.interceptors.request.use(function (config) {
  8. // 在发送请求之前做些什么
  9. console.log('loading...');
  10. return config;
  11. }, function (error) {
  12. // 对请求错误做些什么
  13. return Promise.reject(error);
  14. });
  15. // 添加响应拦截器
  16. myAxios.interceptors.response.use(function (response) {
  17. // 对响应数据做点什么
  18. return response;
  19. }, function (error) {
  20. // 对响应错误做点什么
  21. return Promise.reject(error);
  22. });
  23. myAxios({
  24. url : 'users'
  25. }).then(res => console.log(res.data))
  26. </script>
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post