基于axios请求封装的vue应用实例代码

下面就是基于axios请求封装的vue应用实例代码的完整攻略。

什么是axios?

axios是一个基于Promise的HTTP客户端,用于浏览器和Node.js。它是一个很流行的JavaScript库,常用于跨域请求和RESTful API。axios总的来说,比jQuery、fetch等其他的HTTP库更加强大,也更加易用。

axios如何在Vue项目中使用?

安装axios

要使用axios,你首先需要在你的Vue项目中安装axios。在Vue项目的根目录下,打开终端,输入下面的命令即可:

npm install axios

封装axios

axios的强大在于它的封装性,可以灵活地设置请求方法、请求头、请求参数、响应拦截器等。因此,在Vue项目中我们需要对axios进行一层封装,方便我们使用。

下面是封装后的代码示例:

import axios from 'axios';

// 创建axios实例
const service = axios.create({
  baseURL: process.env.VUE_APP_BASE_API,
  timeout: 5000
});

// 请求拦截器
service.interceptors.request.use(
  config => {
    // 在请求发出之前可以进行一些操作,比如添加token
    config.headers['Authorization'] = getToken();
    return config;
  },
  error => {
    return Promise.reject(error);
  }
);

// 响应拦截器
service.interceptors.response.use(
  response => {
    // 对响应数据进行操作
    return response.data;
  },
  error => {
    return Promise.reject(error);
  }
);

export default service;

在上面的代码中,我们首先通过axios.create()方法创建了一个axios实例,同时设置了请求的基本URL和超时时间。同时,我们通过interceptors属性设置了请求和响应的拦截器,可以在拦截器中进行一些操作,比如设置请求头、请求参数、响应数据等。

使用封装后的axios

在我们封装好的axios实例中,所有的请求都是统一管理的。因此,在Vue项目中使用axios非常方便。下面是一个常见的Vue组件中使用axios的代码示例:

<template>
  <div>
    <h1>{{title}}</h1>
    <ul>
      <li v-for="item in list" :key="item.id">{{item.name}}</li>
    </ul>
  </div>
</template>

<script>
import axios from '@/utils/request'; //引入封装后的axios

export default {
  data() {
    return {
      title: "列表页",
      list: []
    };
  },
  mounted() {
    this.getListData();
  },
  methods: {
    getListData() {
      axios.get('/api/list').then(res => {
        this.list = res.data;
      }).catch(err => {
        console.log(err);
      });
    }
  }
};
</script>

在上面的代码中,我们通过import关键字引入了我们封装好的axios实例,并在getListData函数中使用了axios.get()方法发起了一个GET请求。请求的地址是/api/list,这个地址不用携带基础URL,因为在我们的axios实例中已经配置了基础URL。请求成功后,我们通过res.data获取到了响应数据,并赋值给了list数组,最终在页面中显示出来。

示例说明

示例1:使用POST请求提交表单数据

在这个示例中,我们将模拟一个登录操作,使用POST请求将用户名和密码提交到服务器进行验证。下面是代码示例:

<template>
  <div>
    <h1>{{title}}</h1>
    <form>
      <label for="username">用户名:</label>
      <input type="text" v-model="username" id="username">
      <br>
      <label for="password">密码:</label>
      <input type="password" v-model="password" id="password">
      <br>
      <button type="button" @click="login()">登录</button>
    </form>
  </div>
</template>

<script>
import axios from '@/utils/request'; //引入封装后的axios

export default {
  data() {
    return {
      title: "登录",
      username: "",
      password: ""
    };
  },
  methods: {
    login() {
      axios.post('/api/login', {
        username: this.username,
        password: this.password
      }).then(res => {
        if(res.code === 200) {
          localStorage.setItem('token', res.token);
          this.$router.push('/home');
        } else {
          alert(res.msg);
        }
      }).catch(err => {
        console.log(err);
      });
    }
  }
};
</script>

在上面的代码中,我们先在表单中输入了用户名和密码,并通过axios.post()方法将用户名和密码提交到服务器进行验证。请求成功后,如果响应的code为200,说明验证通过,我们将服务器返回的token存入本地储存,并跳转到主页。如果响应的code不为200,说明验证失败,我们弹出一个提示框显示响应的msg

示例2:使用GET请求获取动态路由参数

在这个示例中,我们将使用GET请求获取动态路由参数,并根据参数显示不同的内容。下面是代码示例:

<template>
  <div>
    <h1>{{title}}</h1>
    <p v-if="id === '1'">这是第一篇文章</p>
    <p v-if="id === '2'">这是第二篇文章</p>
  </div>
</template>

<script>
import axios from '@/utils/request'; //引入封装后的axios

export default {
  data() {
    return {
      title: "文章详情页",
      id: ""
    };
  },
  mounted() {
    this.id = this.$route.params.id; //获取动态路由参数
    this.getArticleData();
  },
  methods: {
    getArticleData() {
      axios.get('/api/article', {
        params: {
          id: this.id //将动态路由参数作为参数传递到请求中
        }
      }).then(res => {
        //对响应数据进行处理
      }).catch(err => {
        console.log(err);
      });
    }
  }
};
</script>

在上面的代码中,我们在组件的mounted钩子函数中获取了动态路由参数id,并将其赋值给data中的id属性。然后,在getArticleData方法中,我们通过axios.get()方法发送GET请求,将动态路由参数作为参数传递到请求中,请求的地址是/api/article。在请求成功后,我们会根据响应的数据进行处理,展示不同的文章内容。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:基于axios请求封装的vue应用实例代码 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • jQWidgets jqxTabs enableAt()方法

    针对“jQWidgets jqxTabs enableAt()方法”的详细讲解,请见下文: 1. jQWidgets jqxTabs组件介绍 jQWidgets jqxTabs组件是一款基于jQuery和CSS3的标签页插件。它提供了一种简单的方法来创建交互式选项卡界面。您可以使用jqxTabs来显示不同的内容,如文本、图片、表格、图表等等。它还支持许多自定…

    jquery 2023年5月12日
    00
  • jquery动态添加带有样式的HTML标签元素方法

    动态添加带有样式的HTML标签元素是网页开发中非常常见的需求,而jQuery框架可以帮助我们轻松实现这一功能。 本文将从以下几个方面来详细讲解“jquery动态添加带有样式的HTML标签元素方法”的完整攻略: 使用jQuery的append()方法添加HTML标签元素及样式 使用jQuery的css()方法添加样式 示例说明 使用jQuery的append(…

    jquery 2023年5月27日
    00
  • jQWidgets jqxNumberInput disabled属性

    以下是关于 jQWidgets jqxNumberInput 组件中 disabled 属性的详细攻略。 jQWidgets jqxNumberInput disabled 属性 jQWidgets jqxNumberInput 组件的 disabled 属性用于禁用或启用组件。 语法 $(‘#numberInput’).jqxNumberInput({ d…

    jquery 2023年5月12日
    00
  • 如何计算一个图标上的通知数量

    要计算一个图标上的通知数量,我们需要在代码中进行以下的步骤: 1.确定计数方式 首先,需要确定如何计算通知的数量。有以下两种计数方式可供考虑: 基于未读通知数量计数:这种方式通过记录尚未读取的通知数量来计算。例如:在一个邮件应用中,如果您有5封未读邮件,那么通知计数器就会显示数字5。 基于新通知数量计数:这种方式使用最近接收的通知数来计算。例如:在一个社交媒…

    jquery 2023年5月12日
    00
  • jQWidgets jqxTree checkAll()方法

    以下是关于 jQWidgets jqxTree checkAll() 方法的完整攻略: jQWidgets jqxTree checkAll() 方法 checkAll() 方法用于选中树形结构中的所有节点。该方法不接受任何参数。 语法 jqxTree’).jqxTree(‘checkAll’); 示例 以下两个示例,演示如何使用 checkAll() 方法…

    jquery 2023年5月11日
    00
  • 如何在jQuery中运行滚动事件的代码

    要在jQuery中运行滚动事件的代码,可以使用scroll()方法。下面是一个完整攻略,包括两个示例说明。 步骤1:创建HTML和CSS 首先,我们需要一个HTML和CSS以便在页面中显示一个元素。下面是一个示例HTML和CSS: <!DOCTYPE html> <html> <head> <title>jQu…

    jquery 2023年5月9日
    00
  • 如何在jQuery中获取文本框的值

    获取文本框的值是 jQuery 中非常常见的操作之一,下面是具体的攻略过程: 1. 确定文本框的选择器 首先需要确定要获取哪一个文本框的值,需要知道该文本框的选择器是什么。选择器可以是 HTML 元素 ID,class 名称或者其他属性等。 假设网页中的一个文本框的 ID 为 “myTextbox”,那么选择器可写成 #myTextbox。 2. 获取和设置…

    jquery 2023年5月12日
    00
  • jQuery事件blur()方法的使用实例讲解

    下面是“jQuery事件blur()方法的使用实例讲解”完整攻略。 什么是 blur() 方法 blur() 是 jQuery 中的一个事件方法,它可以在指定元素失去焦点时触发。 语法格式: $(selector).blur(function) 其中 function 是当事件触发时要执行的函数。 实例 1:根据输入内容计算结果 下面的示例展示了如何使用 b…

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