Vue3中使用axios

Promise介绍

同步代码与异步代码

 

安装并引入axios

npm install axios

此时package.json里面就多了axios依赖

 引入axios

获取数据

Axios GET参数构成:axios.get(url,{config{},…{}…})

  1. url:

    • 字符串:目标服务器的地址,如 https://api.example.com/resource
  2. config (可选):

    • 配置对象,用于设置请求的具体行为。常用的配置项包括:

    • params: URL 查询参数,将其序列化为查询字符串并附加到请求 URL。例如:

      params: { userId: 1, sort: 'asc' }

    • headers: 自定义请求头,例如 Authorization 头:

      headers: { 'Authorization': 'Bearer YOUR_TOKEN' }

    • timeout: 请求超时的时间,单位为毫秒。

      timeout: 5000 // 5秒超时

    • responseType: 指定响应类型(如 'json', 'text', 'blob', 'arraybuffer', 'document')。

    • withCredentials: 指定是否跨域请求时是否需要使用凭证(如 Cookies)。

    • validateStatus: 自定义请求状态码的成功范围。默认情况下,2xx 状态码会被视为成功。

// 以下是个获取url里数据的函数
const getStudent = async () => { // await用在函数里面要在函数前面加async
        // 也可以用结构来承接axios返回数据
        const x = await axios.get('http://geek.itheima.net/v1_0/channels')
        // axios要配合await使用
        console.log(x);
        count.value = x.data.data.arrays // 把axios获取的数据赋值给前面的变量
    }

调用该函数后就得到了url里面的数据

  

 在 Vue 3 中,使用 Axios 进行数据请求通常是放在 onMounted 生命周期钩子中。这个钩子会在组件实例被挂载后立即调用,非常适合进行初始数据获取。如果是点按钮来获取并渲染,就不用放在OnMounted函数里

onMounted(() => {

        // 在组件挂载后执行的代码

         });

<script setup>
import { useStudentStore } from '@/store';
import { onMounted } from 'vue';
const StudentStore = useStudentStore()
// 在组件挂载完成后调用getStudent(),就是要放在onMounted(() => {<fun>})里
onMounted(() => {
    StudentStore.getStudent()
})
</script>

<template>
    <h1>这是son2</h1>
    <ul>
        <li v-for="(item, index) in StudentStore.prince" :key="index">{{ index + 1 }} {{ item }}</li>
    </ul>
   
</template>

发送数据

Axios POST 请求参数结构:axios.post(url, data,{config{},…{}…})

  1. url:

    • 字符串:目标服务器的地址,如 https://api.example.com/resource
  2. data(传得较多):

    • 对象:将被作为请求体发送到服务器的数据。内容可以是任意数据类型(对象、数组、基本数据类型等),通常是 JSON 格式的对象

    示例:

    { name: 'Alice', age: 30 }

  3. config (可选):

    • 配置对象,用于设置请求的具体行为。常用的配置项包括:
    • headers: 自定义请求头。

      headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer TOKEN' }

    • timeout: 请求超时的时间,单位是毫秒。timeout: 1000 // 一秒超时
    • params: URL 查询参数,会自动拼接到 URL 中。

      params: { userId: 1 }

    • responseType: 指定响应类型。

      responseType: 'json' // 默认是 json

    • validateStatus: 自定义请求状态码的成功范围。默认情况下,2xx 状态码会被视为成功。

      validateStatus: function (status) { return status >= 200 && status < 500; // 只接收 2xx 和 4xx 状态码 }

const postfeedback = async() => {
        console.log(advice.value); // advice对象变量在函数外定义好,并用v-model与输入框绑定
        // 发送post请求并获得响应
        const resp = await axios.post('https://hmajax.itheima.net/api/feedback', advice.value)
        alert(resp.data.message); // 后端发送的响应数据
        
    }

axios拦截器

token介绍:

在Vue 3中,使用axios拦截器可以帮助我们在请求发送之前或响应到达之后执行一些操作。这些操作可以包括设置请求头、处理错误、统一管理跳转等。

如何使用axios拦截器:

1. 请求拦截器:在请求发送之前执行,可以用来修改请求配置或添加额外的逻辑,例如添加token验证信息。

   import axios from 'axios';
   axios.interceptors.request.use(
     config => {
       // 在这里添加token或其他配置
       const token = localStorage.getItem('token');
       if (token) {
         config.headers['Authorization'] = `Bearer ${token}`;
       }
       return config;
     },
     error => {
       return Promise.reject(error); //会捕获错误并返回一个拒绝的 Promise
     }
   );

2. 响应拦截器:在响应到达之后执行,可以用来处理响应数据或进行错误处理。

axios.interceptors.response.use(
     response => {
       // 对响应数据进行处理
       return response.data;
     },
     error => {
       // 对响应错误进行处理
       if (error.response && error.response.status === 401) {
         // 处理401错误,例如跳转到登录页面
       }
       return Promise.reject(error);
     }
   );

   3. 移除拦截器:如果需要移除拦截器,可以使用`eject`方法。

   const myInterceptor = axios.interceptors.request.use(...);
   axios.interceptors.request.eject(myInterceptor);

4. 在Vue 3项目中设置axios实例:通常我们会创建一个axios实例,并在项目中全局使用。

// src/axios/index.js
   import axios from 'axios';
   const instance = axios.create({
     baseURL: 'http://your-api-url',
     timeout: 1000,
   });
   // 添加拦截器
   instance.interceptors.request.use(...);
   instance.interceptors.response.use(...);
   export default instance;
   

5. 在main.js中引入axios实例


   import { createApp } from 'vue';
   import App from './App.vue';
   import axios from './axios'; // 引入封装的axios实例

   const app = createApp(App);
   app.config.globalProperties.$axios = axios; // 将axios挂载到全局
   app.mount('#app');
   

6. 在组件中使用:


   import { ref } from 'vue';
   export default {
     setup() {
       const data = ref(null);
       const error = ref(null);
       const fetchData = async () => {
         try {
           data.value = await this.$axios.get('/data');
         } catch (err) {
           error.value = err;
         }
       };
       fetchData();
       return { data, error };
     }
   }
 

通过上述步骤,你可以在Vue 3项目中灵活地使用axios拦截器来处理HTTP请求和响应。这样不仅可以简化代码,还可以提高项目的可维护性。
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/886996.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

需求6:如何写一个后端接口?

这两天一直在对之前做的工作做梳理总结&#xff0c;不过前两天我都是在总结一些bug的问题。尽管有些bug问题我还没写文章&#xff0c;但是&#xff0c;我今天不得不先停下对bug的总结了。因为在国庆之后&#xff0c;我需要自己开发一个IT资产管理的功能&#xff0c;这个功能需要…

【Redis】如何在 Ubuntu 上安装 Redis 5

&#x1f970;&#x1f970;&#x1f970;来都来了&#xff0c;不妨点个关注叭&#xff01; &#x1f449;博客主页&#xff1a;欢迎各位大佬!&#x1f448; 本期内容主要介绍如何在 Ubuntu 上安装 Redis5 一些碎碎念&#xff1a; 本来这期内容介绍如何在 Centos 安装 Redis …

区块链可投会议CCF C--CT-RSA 2025 截止10.15 附2024录用率

Conference&#xff1a;The Cryptographers Track at RSA Conference (CT-RSA) CCF level&#xff1a;CCF C Categories&#xff1a;network and information security Year&#xff1a;2025 Conference time&#xff1a;San Francisco, California, USA • April 28–May …

.NET开源跨平台桌面和移动应用的统一框架 - Eto.Forms

前言 今天大姚给大家分享一个.NET开源、跨平台桌面和移动应用的统一框架&#xff1a;Eto.Forms。 项目介绍 Eto.Forms是一个.NET开源、跨平台的桌面和移动应用的统一框架&#xff0c;该框架允许开发者使用单一的UI代码库构建在多个平台上运行的应用程序&#xff0c;并利用各…

嵌入式C语言自我修养:编译链接

源文件生成可执行文件的过程&#xff1f; 源文件经过预处理、编译、汇编、链接生成一个可执行的目标文件。 编译器驱动程序&#xff0c;包括预处理器、编译器、汇编器和链接器。Linux用户可以调用GCC驱动程序来完成整个编译流程。 使用GCC驱动程序将示例程序从ASCII码源文件转换…

数字图像处理:边缘检测

数字图像处理&#xff1a;边缘检测 笔记来源&#xff1a; 1.Gradient and Laplacian Filter, Difference of Gaussians (DOG) 1.1 图像一阶梯度 水平方向的一阶导数 一阶导数滤波器在实际应用中难实现的原因 图像梯度中&#xff0c;一阶梯度中找局部极大值就是边缘所在处&a…

SOCKS5代理和HTTP代理哪个快?深度解析两者的速度差异

在现代互联网环境中&#xff0c;使用代理IP已经成为了许多人日常生活和工作的必备工具。无论是为了保护隐私&#xff0c;还是为了访问某些特定资源&#xff0c;代理IP都扮演着重要的角色。今天&#xff0c;我们就来聊聊SOCKS5代理和HTTP代理&#xff0c;看看这两者到底哪个更快…

netty编程之实现websocket客户端并发送二进制消息

写在前面 源码。 本文看下netty如何实现websocket客户端并发送二进制消息。 ws的server端参考这篇文章。 1&#xff1a;正文 抽象类AbstractWebsocketClient定义了发送二进制数据的方法&#xff1a; public abstract class AbstractWebsocketClient implements Closeable {…

向量数据库|第1期|从零开始学习

向量数据库|第1期|从零开始学习 1、向量数据库中的基本概念 1.1 什么是余弦 余弦函数是一种三角函数&#xff0c;在直角三角形中&#xff0c;某个锐角的余弦为&#xff1a;临边与斜边的比值&#xff0c;如下图cosAb/c。引申到任意三角形中&#xff0c;即余弦定理&#xff1a;…

大数据-151 Apache Druid 集群模式 配置启动【上篇】 超详细!

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

数据结构--二叉树的顺序实现(堆实现)

引言 在计算机科学中&#xff0c;二叉树是一种重要的数据结构&#xff0c;广泛应用于各种算法和程序设计中。本文将探讨二叉树的顺序实现&#xff0c;特别是堆的实现方式。 一、树 1.1树的概念与结构 树是⼀种⾮线性的数据结构&#xff0c;它是由 n(n>0) 个有限结点组成…

【C++打怪之路Lv6】-- 内存管理

&#x1f308; 个人主页&#xff1a;白子寰 &#x1f525; 分类专栏&#xff1a;C打怪之路&#xff0c;python从入门到精通&#xff0c;数据结构&#xff0c;C语言&#xff0c;C语言题集&#x1f448; 希望得到您的订阅和支持~ &#x1f4a1; 坚持创作博文(平均质量分82)&#…

15分钟学 Python 第36天 :Python 爬虫入门(二)

Python 爬虫入门&#xff1a;环境准备 在进行Python爬虫的学习和实践之前&#xff0c;首先需要准备好合适的开发环境。本节将详细介绍Python环境的安装、必要库的配置、以及常用工具的使用&#xff0c;为后续的爬虫编写奠定坚实的基础。 1. 环境准备概述 1.1 为什么环境准备…

基于Springboot投稿和稿件处理系统设计与实现

博主介绍&#xff1a;专注于Java vue .net php phython 小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设&#xff0c;从业十五余年开发设计教学工作 ☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟 我的博客空间发布了1000毕设题目 方便大家学习使用 感兴趣的…

数据集-目标检测系列- 货船 检测数据集 freighter>> DataBall

数据集-目标检测系列- 货船 检测数据集 freighter>> DataBall 数据集-目标检测系列- 货船 检测数据集 freighter>> DataBall 数据量&#xff1a;3k 想要进一步了解&#xff0c;请联系。 DataBall 助力快速掌握数据集的信息和使用方式&#xff0c;会员享有 百种…

订阅ROS2中相机的相关话题并保存RGB、深度和点云图

系统&#xff1a;Ubuntu22.04 ROS2版本&#xff1a;ROS2 humble 1.订阅ROS2中相机的相关话题并保存RGB图、深度图和点云图 ros2 topic list/stellar_1/rgb/image_raw /camera/depth/image_raw /stellar_1/points2CMakeLists.txt cmake_minimum_required(VERSION 3.15) projec…

建筑资质的未来发展趋势

&#x1f3d7;️建筑资质是建筑企业进入市场的通行证&#xff0c;它不仅关系到企业的竞争力&#xff0c;也影响着整个建筑行业的健康发展。随着政策的调整和技术的进步&#xff0c;建筑资质管理正面临着新的变革。 1. 资质管理的数字化转型&#xff1a;&#x1f310; 随着信息技…

Gaussian-splatting 项目环境配置笔记(Win11)

如果你是配置别的项目的过程中用到了3D GS相关的内容&#xff0c;然后这部分内容环境一直配不好&#xff0c;也可以跟随这个博客配一下环境&#xff0c;配完后起码3D GS部分就搞定了。 文章目录 概述项目链接&#xff1a;VS2019直接下载链接CUDA不同版本下载链接安装Condasetup…

63.5 注意力提示_by《李沐:动手学深度学习v2》pytorch版

系列文章目录 文章目录 系列文章目录注意力提示生物学中的注意力提示查询、键和值注意力的可视化使用 show_heatmaps 显示注意力权重代码示例 代码解析结果 小结练习 注意力提示 &#x1f3f7;sec_attention-cues 感谢读者对本书的关注&#xff0c;因为读者的注意力是一种稀缺…

【MATLAB2024b】安装离线帮助文档(windows)

文章目录 一、在 MATLAB 设置中安装二、从math works 网站下载ISO&#xff1a;给无法联网的电脑安装三、重要说明 版本&#xff1a;matlab 2024b&#xff08;或者大于等于2023a&#xff09; 所需空间&#xff1a;10~15 GB 平台&#xff1a;Windows 需要注册math works账号。 一…