Vue之axios基础使用

axios 简介

axios 是一个基于Promise 用于浏览器和 nodejs 的 HTTP 客户端,它本身具有以下特征:

1.从浏览器中创建 XMLHttpRequest
2.从 node.js 发出 http 请求
3.支持 Promise API
4.拦截请求和响应
5.转换请求和响应数据
6.取消请求
7.自动转换JSON数据
8.客户端支持防止 CSRF/XSRF
安装
npm安装

$ npm install axios --save

通过cdn引入

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

发送GET请求
// created:vue生命周期中的钩子函数,在这个时间点,data中的数据已经注入到响应式系统中

created(){
    axios.get('api/getData.php',{       // 还可以直接把参数拼接在url后边
        params:{
            title:'眼镜'
        }
    }).then(function(res){
        this.goodsList = res.data;
    }).catch(function (error) {
        console.log(error);
    });
}

response.data才是真正返回的后台数据
发送POST请求

axios.post('/user', {
    firstName: 'Fred',
    lastName: 'Flintstone'
}).then(function (response) {
    console.log(response);
}).catch(function (error) {
    console.log(error);
});

// 注意: 如果发送请求时,发现传递的参数是对象,那么可用如下方式传参数
// var params = new URLSearchParams();
// params.append('title', '眼镜');
// params.append('id',1);
// axios.post('/user', params)
//      .then(function(res){})
//      .catch(function(error){});
response.data才是真正返回的后台数据
执行多个并发请求
//获得用户信息的请求
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.interceptors.request.use(
  function (config) {
      // 在发送请求之前做些什么
      return config;
  },
  function (error) {
      // 对请求错误做些什么
      return Promise.reject(error);
  }
);

响应拦截器

axios.interceptors.response.use(
  function (config) {
      // 对响应数据做点什么
      return config;
  },
  function (error) {
      // 对响应错误做点什么
      return Promise.reject(error);
  }
);

Vue中axios在发送POST请求时,参数的处理

  1. 下载安装第三方模块 qs -> npm install qs --save-dev
  2. 处理方式

// 第一种: 直接在发送的时候,对数据进行qs.stringify处理
// 缺点: 如果项目大,有大量的请求需要发送,那么一个一个加会很麻烦

axios.post("/checkLogin.php", qs.stringify({
  name, pwd
}));

// 第二种: 使用axios.create创建一个新的axios实例,统一对数据进行处理, 同时也要借助qs模块

const Axios = axios.create({
  baseURL: '/api',
  transformRequest: [function (data) {
    const d = qs.stringify(data)
    return d;
  }]
})

Axios.post("/checkLogin.php", {
  name, pwd
});
<think>好的,用户问的是“vue 使用 Axios”,我需要先理解他们想了解什么。可能是在Vue项目中如何使用Axios进行HTTP请求。首先,我应该介绍Axios的基本用法,比如安装、在Vue组件中导入,然后举几个例子,比如GET和POST请求。 然后,考虑到Vue通常结合async/await或者.then().catch()来处理异步操作,需要给出这两种方式的示例代码。可能还需要提到在Vue实例中配置默认的baseURL,或者设置拦截器,这些是常见的使用场景。 接下来,用户可能想知道如何处理错误,比如网络错误或响应错误,这时候Axios的拦截器或者.catch()方法会派上用场。另外,可能还需要提到在组件中使用Axios时,如何管理加载状态和错误信息,比如显示加载中或错误提示。 然后,我需要检查是否有常见的问题需要注意,比如跨域问题,这时候可能需要配置代理或者使用CORS。另外,Axios的取消请求功能可能对某些高级用户有用,可以简要提及。 最后,确保回答的结构清晰,先安装和引入,再基本用法,然后进阶配置,错误处理,最后注意事项。同时,按照要求生成相关问题,比如GET和POST的区别,拦截器使用,错误处理,跨域解决,以及Axios和fetch的对比。这些相关问题要符合用户可能遇到的疑问,帮助他们进一步理解。</think>在 Vue 项目中使用 Axios 进行 HTTP 请求的步骤如下: 1. **安装 Axios** ```bash npm install axios ``` 2. **在组件中引入 Axios** ```javascript import axios from 'axios'; ``` 3. **基础用法示例** ```javascript // GET 请求 axios.get('/user', { params: { ID: 123 } }) .then(response => console.log(response.data)) .catch(error => console.error(error)); // POST 请求 axios.post('/user', { firstName: 'John', lastName: 'Doe' }) .then(response => console.log(response.data)) .catch(error => console.error(error)); ``` 4. **结合 async/await 使用** ```javascript async function fetchData() { try { const response = await axios.get('/api/data'); return response.data; } catch (error) { console.error('请求失败:', error); throw error; } } ``` 5. **配置默认基础路径** ```javascript axios.defaults.baseURL = 'https://api.example.com'; ``` 6. **请求拦截器(添加 token)** ```javascript axios.interceptors.request.use(config => { const token = localStorage.getItem('token'); if (token) { config.headers.Authorization = `Bearer ${token}`; } return config; }); ``` 7. **响应拦截器(统一错误处理)** ```javascript axios.interceptors.response.use( response => response, error => { if (error.response?.status === 401) { // 处理未授权 } return Promise.reject(error); } ); ``` **注意事项:** - 跨域请求需配置代理或后端开启 CORS - 生产环境建议使用环境变量配置 API 地址 - 可通过 `axios.create()` 创建多个实例管理不同服务
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值