基于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日

相关文章

  • jQuery页面加载初始化常用的三种方法

    当使用jQuery进行页面开发时,我们经常需要在页面加载时进行初始化工作,类似于绑定事件、设置样式等等。这篇攻略将会介绍jQuery页面加载初始化常用的三种方法,分别是: $(document).ready()方法 $(window).load()方法 $(window).on(‘load’, function(){})方法 $(document).read…

    jquery 2023年5月28日
    00
  • jQuery Mobile Pagecontainer的默认选项

    当使用jQuery Mobile创建多个页面和导航时,可以使用pagecontainer插件来管理页面。pagecontainer插件可以将所有页面的管理集中在一个地方,方便进行页面切换、重载等操作。在使用pagecontainer时,可以使用一些默认选项来控制其行为。下面是pagecontainer的一些默认选项的详细介绍。 常见选项 appendTo 默…

    jquery 2023年5月12日
    00
  • jQWidgets jqxListBox focus()方法

    jQWidgets jqxListBox focus()方法详解 jQWidgets是一个基于jQuery的UI组件库,提供了丰富UI组件工具包。jqxListBox是其中之一。本文将详细介绍jqxListBox的focus()方法,包括定义、语法和示例。 focus()方法的定义 jqxListBox的focus()方法用于将焦点设置到列表框上。当列表框获…

    jquery 2023年5月10日
    00
  • jQuery实现指定区域外单击关闭指定层的方法【经典】

    标准的markdown格式文本如下: jQuery实现指定区域外单击关闭指定层的方法【经典】 1. 问题描述 在网页中,我们通常会使用一些弹出层来展示一些信息或者操作,但是当用户在界面上单击其他区域时,弹出层需要被关闭,这就需要实现指定区域外单击关闭指定层的方法。 2. 实现过程 我们可以利用jQuery的事件绑定机制来实现指定区域外单击关闭指定层的方法。具…

    jquery 2023年5月27日
    00
  • jQuery+jsp下拉框联动获取本地数据的方法(附源码)

    首先需要明确一下,jQuery是一个简洁易用的JavaScript库,而JSP(JavaServer Pages)是Java EE Web 应用程序的一种服务器端技术。本文要讲述的是如何在JSP中使用jQuery实现下拉框联动,并获取本地数据。 1. 首先引入jQuery库 在JSP页面中,我们需要在<head>标签中引入jQuery库,代码如下…

    jquery 2023年5月19日
    00
  • jQuery的Read()方法代替原生JS详解

    下面是对”jQuery的Read()方法代替原生JS详解”的完整攻略。 什么是jQuery的Read()方法 在jQuery中,Read()方法是一种用于发送Ajax请求并读取响应数据的方法。它是一个简单但强大的方法,旨在简化常见的Ajax开发任务。 Read()方法的语法如下: $.get(url, data, success, dataType); 参数…

    jquery 2023年5月27日
    00
  • jQuery prepend()的例子

    下面是关于”jQuery prepend()的例子”的详细攻略: 什么是jQuery prepend()方法? .prepend()方法可以在指定元素的开始处(比如第一个子元素之前)插入新内容,它会在目标元素的开头插入传入的参数内容。 使用.prepend()方法时,可以传入一个或多个参数,每个参数都可以包含HTML字符串,DOM元素或jQuery对象。这些…

    jquery 2023年5月12日
    00
  • jQWidgets jqxPanel getScrollWidth()方法

    以下是关于 jQWidgets jqxPanel 组件中 getScrollWidth() 方法的详细攻略。 jQWidgets jqxPanel getScrollWidth() 方法 jQWidgets jqxPanel 组件的 getScrollWidth() 方法用于获取面板的滚动宽度。 语法 var scrollWidth = $(‘#panel’…

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