vue-cli 使用axios的操作方法及整合axios的多种方法

yizhihongxing

一、什么是axios?

axios 是一个基于 Promise 的HTTP 库,可以用在浏览器和 node.js 中,axios 既可以用在浏览器端和node端,它是基于 ajax 和 xmlHttpRequest 封装的。它的优点在于,它可以让前后端的数据请求更加简单和易用,并且具有广泛的应用场景。

二、 vue-cli 中如何使用axios?

1、安装 axios

在使用 axios 之前,首先要安装 axios。在终端中使用以下命令进行安装:

npm install axios --save

2、在项目中引入axios

在 main.js 中,我们引入axios 并建立与后端服务器的连接,引入代码如下:

import axios from 'axios'
Vue.prototype.$http= axios

3、在 Vue 组件中使用 axios

在 Vue 组件中使用 axios 可以直接调用 $http 对象,例如:

methods: {
    getHelloWorld() {
      this.$http.get('http://localhost:8080/hello').then(response => {
        console.log(response.data)
      })
    }
  }

4、设置 axios 的默认请求头

在 axios 中可以设置默认请求头,比如对于 post 请求,我们可以设置 Content-Type:

import axios from 'axios';
import qs from 'qs';

axios.defaults.baseURL = 'http://localhost:8080';
axios.defaults.timeout = 10000;
axios.defaults.headers.post['Content-Type'] = 'application/x-protobuf';

// post 请求
axios.post('/user', qs.stringify({username: 'simsun'}))
  .then(response => {
    console.log(response.data);
  })
  .catch(error => {
    console.log(error);
  });

5、全局拦截器

axios 提供了请求和响应的拦截器,可以在请求或响应被 then 或 catch 处理前拦截它们。

在 request 拦截器中,可以对请求进行一些统一处理,比如设置全局token。在 response 拦截器中,可以对响应进行统一处理,比如对所有的 401 响应进行重定向。

// 添加请求拦截器
axios.interceptors.request.use(
  config => {
    // 在发送请求之前做些什么
    config.headers.Authorization = localStorage.getItem('token') || '';
    return config;
  },
  error => {
    // 对请求错误做些什么
    return Promise.reject(error);
  }
);

// 添加响应拦截器
axios.interceptors.response.use(
  response => {
    // 对响应数据做点什么
    return response;
  },
  error => {
    // 对响应错误做点什么
    return Promise.reject(error);
  }
);

三、如何整合axios的多种方法

1、简单使用

我们可以直接使用 axios.get、axios.post 等方法发送请求。

axios.get('/user?id=123')
axios.post('/user', {id: '123'})

2、创建 axios 实例

如果我们需要发送多个请求,我们可以使用 axios.create 创建一个 axios 的实例,从而为给实例设定配置选项。

const instance = axios.create({
  baseURL: 'http://localhost:8080',
  timeout: 10000,
  headers: {
    'Content-Type': 'application/x-protobuf'
  },
  transformRequest: [function (data, headers) {
    // 对 data 进行任意转换处理
    return data;
  }],
});

instance.get('/user?id=123')
instance.post('/user', {id: '123'})

3、封装 axios 通用方法

我们可以封装一个 axios 请求的工具类,在其中封装 get、post 等请求方法,我们可以通过这些方法来完成请求操作。

/**
 * axios 通用请求方法
 * @param url 请求的地址
 * @param method 请求的方式,默认为get
 * @param params 请求的参数,get请求可直接拼接url参数
 * @returns {Promise<any>} 请求的结果
 */
function request(url, method = 'get', params = {}) {
  const instance = axios.create({
    baseURL: 'http://localhost:8080',
    timeout: 10000,
    headers: {
      'Content-Type': 'application/x-protobuf'
    },
    transformRequest: [function (data, headers) {
      return data;
    }],
  });

  return new Promise((resolve, reject) => {
    instance({
      url: url,
      method: method,
      params: method === 'get' ? params : {},
      data: method === 'post' ? params : {},
      transformResponse: [function (data) {
        // 对响应数据进行任意转换处理
        return data;
      }],
    }).then(response => {
      resolve(response.data);
    }).catch(error => {
      reject(error);
    });
  });
}

// 使用方法
request('/user?id=123')
request('/user', 'post', {id: '123'})

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue-cli 使用axios的操作方法及整合axios的多种方法 - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • 快速解决百度编译器json报错的问题

    以下是快速解决百度编译器json报错的问题的完整攻略: 问题描述 在使用百度编译器进行小程序开发过程中,有时候会遇到json文件报错的情况。例如,当你在app.json文件中添加了一个新的页面路径后,百度编译器可能会报错说这个路径不是一个合法的字符串或者缺少引号等。 解决步骤 步骤1:检查json文件语法是否正确 首先,你需要检查出错的json文件是否存在语…

    other 2023年6月26日
    00
  • windowsserver2012安装.netframework3.5

    Windows Server 2012安装.NET Framework 3.5 .NET Framework 3.5是一种Microsoft开发的应用程序框架,它是许多Windows应用程序的基础。以下是Windows Server 2012安装.NET Framework 3.5的完整攻略。 步骤 以下是Windows Server 2012安装.NET …

    other 2023年5月6日
    00
  • centos7.7安装教程

    CentOS 7.7 安装教程 CentOS是一种基于Red Hat Enterprise Linux(RHEL)源代码的自由开源操作系统。本攻略将介绍如何在计算机上安装CentOS 7.7。 步骤一:下载CentOS 7.7 首先,我们需要从CentOS官网下载CentOS 7.7ISO镜像文件。以下是下载链接: CentOS 7.7 下载链接 步骤二:创…

    other 2023年5月9日
    00
  • centos如何扩充/增加磁盘

    当然,我可以为您提供有关“CentOS如何扩充/增加磁盘”的完整攻略,以下是详细说明: CentOS如何扩充/增加磁盘 在CentOS系统中如果需要扩充或增加磁盘,可以通过以下步骤完成: 步骤1:创建新的虚拟磁盘 首先,需要在虚拟中创建一个新的虚拟磁盘。这可以通过虚拟机管理软件(如VMware或VirtualBox)完成。在创建新的虚拟磁盘时,需要注意选择合…

    other 2023年5月7日
    00
  • hbuilderx对比Android有什么区别? 两款软件特点介绍

    HBuilderX vs. Android: A Detailed Comparison Introduction HBuilderX and Android are two different software tools used in the development of mobile applications. While HBuilderX is …

    other 2023年7月27日
    00
  • 获取App.config配置文件中的参数值

    获取App.config配置文件中的参数值可以通过.NET Framework中的ConfigurationManager类实现。 具体步骤如下: 在项目中添加App.config文件,添加相应的配置项。示例代码如下: <?xml version="1.0" encoding="utf-8" ?> <…

    other 2023年6月25日
    00
  • Java堆内存又溢出了!教你一招必杀技(推荐)

    Java堆内存溢出攻略 Java堆内存溢出是Java应用程序中常见的问题之一。本攻略将详细讲解如何解决Java堆内存溢出问题,并提供两个示例说明。 1. 了解Java堆内存溢出 Java堆内存是用于存储对象实例的区域,当应用程序创建的对象数量超过堆内存的限制时,就会发生堆内存溢出。这通常是由于内存泄漏或者对象生命周期管理不当引起的。 2. 分析堆内存溢出错误…

    other 2023年8月2日
    00
  • docker删除none

    什么是Docker? Docker是一种开源的容器化平台,可以帮助开发人员和系统管理员更轻松地构建、部署和运行应用程序。 什么是Docker none? 在Docker中,当容器被删除时,它们会留下一个名为“none”的镜像。这些镜像不包含任何文件,但它们会占用磁盘空间并且可能会导致Docker镜像列表变得混乱。 如何删除Docker none? 以下是在D…

    other 2023年5月7日
    00
合作推广
合作推广
分享本页
返回顶部