axios 在 vue 中的运用

什么是 axios?

Axios 是一个基于 promiseHTTP 库,可以用在浏览器和 node.js 中。

axios 可以做什么?

vue 官网推荐使用的是 axios 请求,所以我们可以在 vue 中使用 axios 创建 XML HttpRequests 请求,当然 axios 能做到的肯定不仅仅只是这些,在 axios 官网中介绍它具有八大特新。

  • 在浏览器端创建 XML HttpRequests
  • 在 NodeJS 中创建 http 请求
  • 支持 Promise API
  • 可以拦截请求和响应
  • 转换请求数据和响应数据
  • 取消请求
  • 自动转换 JSON 格式
  • 客户端支持防御 XSRF

如何使用 axios?

下载

使用 axios 可以直接 cdn 引入,但是本篇博文主要记录在 vue 框架中使用 axios 创建 XML HttpRequests 请求,所以我们使用 npm 安装。

npm install axios --save

当然在 vue 中,我们还需要使用到 vue-axios ,它是对 axios 的轻度封装。

npm install vue-axios --save

我们在 main.js 中依次按照顺序引入 vueaxiosvue-axios

// ./src/main.js

import Vue from 'vue'
import axios from 'axios'
import VueAxios from 'vue-axios'
Vue.use(VueAxios, axios)

GET/POST请求

我们可以直接在组件中直接调用发送GET或者POST请求。

// ./scr/views/Home.vue

Vue.axios
  .get('/getdata')
  .then(function (response) {
    console.log(response);
  })
  .catch(function (error) {
    console.log(error);
  });

参数的传递

我们可以在GET请求或者POST请求传递参数,我们可以直接在请求地址里面使用?的方式进行传递参数,当然更推荐的是使用一下的方式传递参数。

// ./scr/views/Home.vue

Vue.axios
  .get('/getdata', {
    params: {
      id: 100006
    }
  })
  .then(function (response) {
    console.log(response);
  })
  .catch(function (error) {
    console.log(error);
  });

后台无法获取参数的问题

应为 axios 请求与 AJAX 不同,axios 的格式是 Request Payload,而 AJAX 的格式是 Form Data ,这是我们需要转换一下格式。

使用qs模块

npm install qs --save

引入

import qs from 'qs'

转换

Vue.axios.post(url, Vue.qs.stringify(data));

当然我们可以对 axios 进行简单的封装,减少代码量。

const MyAxios = function(...agr) {
  if (agr.length == 2) {
    if (agr[0] == "get") {
      return Vue.axios.get(agr[1]);
    } else if (agr[0] == "post") {
      return Vue.axios.post(agr[1]);
    }
  } else {
    if (agr[0] == "get") {
      return Vue.axios.get(agr[1], Vue.qs.stringify(agr[2]));
    } else if (agr[0] == "post") {
      return Vue.axios.post(agr[1], Vue.qs.stringify(agr[2]));
    }
  }
};
Vue 3,可以使用axios库来进行网络请求。axios是一个基于Promise的HTTP客户端,可以在浏览器和Node.js使用。 首先,你需要安装axios库。可以通过npm或者yarn来安装: ``` npm install axios ``` 或者 ``` yarn add axios ``` 安装完成后,在需要使用axios的地方引入它: ```javascript import axios from 'axios'; ``` 接下来,你可以使用axios发送HTTP请求。axios提供了多种方法,如get、post、put、delete等。以下是一个简单的例子: ```javascript axios.get('/api/users') .then(response => { console.log(response.data); }) .catch(error => { console.error(error); }); ``` 在上面的例子,我们使用了axios的get方法发送了一个GET请求到`/api/users`接口,并通过Promise的then方法处理返回的数据。如果请求出现错误,可以通过catch方法捕获并处理错误。 除了get方法,axios还提供了其他方法,如post、put、delete等,用于发送不同类型的请求。你可以根据具体需求选择合适的方法。 另外,在Vue 3,你可以将axios封装成一个插件,以便在整个应用方便地使用。以下是一个简单的示例: ```javascript // axios.js import axios from 'axios'; const instance = axios.create({ baseURL: 'https://api.example.com', // 设置基础URL timeout: 5000, // 设置超时时间 }); export default { install: (app) => { app.config.globalProperties.$axios = instance; }, }; ``` 然后,在main.js使用该插件: ```javascript import { createApp } from 'vue'; import App from './App.vue'; import axiosPlugin from './axios'; const app = createApp(App); app.use(axiosPlugin); app.mount('#app'); ``` 现在,你可以在Vue组件通过`this.$axios`来使用axios了: ```javascript export default { mounted() { this.$axios.get('/api/users') .then(response => { console.log(response.data); }) .catch(error => { console.error(error); }); }, }; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值