首页 > 其他分享 >使用Vue 3和Axios进行API数据交互

使用Vue 3和Axios进行API数据交互

时间:2024-09-08 13:54:57浏览次数:11  
标签:API fetchUsers Axios users vue Vue axios error

使用Vue 3和Axios进行API数据交互

在现代Web开发中,前端框架和库的使用越来越普遍,Vue.js便是其中一个受欢迎的选择。通过Vue 3引入的Composition API和setup语法糖,我们可以更灵活地组织代码,并提高代码的可读性和可维护性。与此同时,Axios作为一个基于Promise的HTTP客户端,能够帮助我们轻松地与API进行交互。在这篇博客中,我将介绍如何利用Vue 3及Axios进行API数据交互,并通过示例代码来展示其基本用法。

1. 环境准备

在开始之前,请确保你已经装好了Node.js和npm。接下来,我们可以使用Vue CLI来创建一个新项目。打开终端,执行以下命令:

npm install -g @vue/cli
vue create vue-axios-example
cd vue-axios-example
npm install axios

此时,我们已经创建了一个新的Vue项目并安装了Axios模块。

2. 组件结构

在这个示例中,我们将创建一个简单的组件,该组件将从一个公共API(例如JSONPlaceholder)获取一些数据并显示在页面上。我们将在src/components目录下创建一个新的文件UserList.vue

<template>
  <div>
    <h1>User List</h1>
    <ul v-if="users.length">
      <li v-for="user in users" :key="user.id">
        {{ user.name }} - {{ user.email }}
      </li>
    </ul>
    <p v-else>Loading users...</p>
    <button @click="fetchUsers">Refresh Users</button>
  </div>
</template>

<script>
import { ref } from 'vue';
import axios from 'axios';

export default {
  name: 'UserList',
  setup() {
    const users = ref([]);

    const fetchUsers = async () => {
      try {
        const response = await axios.get('https://jsonplaceholder.typicode.com/users');
        users.value = response.data;
      } catch (error) {
        console.error('Error fetching users:', error);
      }
    };

    // On component mount, fetch users
    fetchUsers();

    return {
      users,
      fetchUsers
    };
  },
};
</script>

<style scoped>
h1 {
  color: #42b983;
}
</style>

2.1 组件分析

  • 模板部分:我们使用<template>定义了用户列表的HTML结构。这里包含一个<ul>,它会遍历并显示从API获取到的用户数据。如果数据还在加载中,会显示“Loading users…”提示。

  • 脚本部分:在<script>部分,我们使用setup函数。在这个函数中,我们使用ref来创建一个响应式变量users,并定义异步函数fetchUsers来获取用户数据。

    1. fetchUsers函数使用Axios发送GET请求,获取JSONPlaceholder的用户数据。
    2. users.value = response.data将获取到的数据赋值给users
  • 样式部分<style scoped> 确保样式只作用于当前组件。

3. 使用组件

为了在应用中使用我们的组件,我们可以在src/App.vue中进行如下修改:

<template>
  <div id="app">
    <UserList />
  </div>
</template>

<script>
import UserList from './components/UserList.vue';

export default {
  name: 'App',
  components: {
    UserList,
  },
};
</script>

<style>
#app {
  text-align: center;
  margin-top: 60px;
}
</style>

在这里,我们首先导入UserList组件,然后在模板中使用它。这样,我们就可以在主应用程序中看到用户列表。

4. 运行项目

到此为止,我们的项目已经准备完成。现在,我们可以运行开发服务器,查看我们的组件效果:

npm run serve

打开浏览器,访问http://localhost:8080,你将看到一个用户列表,且下方有一个“Refresh Users”按钮,点击此按钮可以重新获取用户数据。

5. 异常处理

在上面的fetchUsers函数中,我们已经涉及到了简单的错误处理。如果在请求过程中出现任何错误,开发者将会看到控制台输出相关错误信息。为了进一步提升用户体验,我们可以在UI中增加一些错误提示。

修改UserList.vue中的状态管理:

<template>
  <div>
    <h1>User List</h1>
    <ul v-if="users.length">
      <li v-for="user in users" :key="user.id">
        {{ user.name }} - {{ user.email }}
      </li>
    </ul>
    <p v-else-if="error">{{ error }}</p>
    <p v-else>Loading users...</p>
    <button @click="fetchUsers">Refresh Users</button>
  </div>
</template>

<script>
import { ref } from 'vue';
import axios from 'axios';

export default {
  name: 'UserList',
  setup() {
    const users = ref([]);
    const error = ref(null);

    const fetchUsers = async () => {
      error.value = null; // 清空错误
      try {
        const response = await axios.get('https://jsonplaceholder.typicode.com/users');
        users.value = response.data;
      } catch (err) {
        error.value = 'Error fetching users: ' + err.message;
      }
    };

    fetchUsers();

    return { users, fetchUsers, error };
  },
};
</script>

在这段代码中,我们引入了一个新的响应式变量error,用于保存错误信息,并在UI中进行适当的显示。这样,用户在获取数据失败时,可以看到相关的错误提示。

总结

通过本篇博客,我们学习了如何使用Vue 3的setup语法糖以及Axios进行简单的API数据交互。借助这些现代化的工具,我们可以更加灵活地管理前端状态与API请求。无论是创建独立的组件还是构建复杂的应用,这种方法都能大大提高我们的开发效率与代码质量。


最后问候亲爱的朋友们,并邀请你们阅读我的全新著作

书籍详情
在这里插入图片描述

标签:API,fetchUsers,Axios,users,vue,Vue,axios,error
From: https://blog.csdn.net/yuanlong12178/article/details/142025741

相关文章

  • Java大学生实战项目-基于SpringBoot+vue 的民宿在线预定平台
    博主介绍:✌Java徐师兄、7年大厂程序员经历。全网粉丝13w+、csdn博客专家、掘金/华为云等平台优质作者、专注于Java技术领域和毕业项目实战✌......
  • Java大学生实战项目- 基于SpringBoot+vue 的在线远程考试系统
    博主介绍:✌Java徐师兄、7年大厂程序员经历。全网粉丝13w+、csdn博客专家、掘金/华为云等平台优质作者、专注于Java技术领域和毕业项目实战✌......
  • 京东物流查询|开发者调用API接口实现
    快递聚合查询的优势1、高效整合多种快递信息。2、实时动态更新。3、自动化管理流程。聚合国内外1500家快递公司的物流信息查询服务,使用API接口查询京东物流的便捷步骤,首先选择专业的数据平台的快递API接口:https://www.tanshuapi.com/market/detail-68以下示例是参考的示例代码:impor......
  • AI大语言模型LLM学习-基于Vue3的AI问答页面
    系列文章1.AI大语言模型LLM学习-入门篇2.AI大语言模型LLM学习-Token及流式响应3.AI大语言模型LLM学习-WebAPI搭建前言在上一篇博文中,我们使用Flask这一Web框架结合LLM模型实现了后端流式WebAPI接口,本篇将基于Vue3实现AI问答页面,本人习惯使用HBuilder进行前端页面......
  • Java毕设项目II基于Spring Boot+Vue的失物招领平台
    目录一、前言二、技术介绍三、系统实现四、论文参考五、核心代码六、源码获取全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末一、前言在快节奏的生活中,物品遗失与寻回成为了人......
  • Vue 多个服务的路由配置 在 vue.config.js 里面怎么写
    在Vue项目的vue.config.js文件中,你不能直接配置路由服务,因为这个文件主要用于配置Webpack和开发服务器等项目设置。路由配置通常是在Vue项目的代码中设置的,例如在router/index.js文件中。不过,如果你需要配置多个服务(即不同的API服务或代理服务),你可以在vue.config.js......
  • 【含文档+PPT+源码】基于SpringBoot+Vue医药知识学习与分享平台的设计与实现
    项目介绍本课程演示的是一款基于SpringBoot+Vue医药知识学习与分享平台的设计与实现,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。1.包含:项目源码、项目文档、数据库脚本、软件工具等所有资料2.带你从零开始部署运行本套系统3.该项目附......
  • 基于nodejs+vue动漫论坛[程序+论文+开题] 计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展,动漫文化作为一种全球化的流行文化现象,在全球范围内吸引了大量忠实粉丝。动漫论坛作为动漫爱好者交流思想、分享作品、探讨剧情的......
  • 基于nodejs+vue动漫模型仓储管理系统[程序+论文+开题] 计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景随着动漫产业的蓬勃发展,动漫模型作为该领域的重要衍生品,其市场需求日益增长。动漫模型种类繁多,从精致的手办到复杂的场景模型,每一款都承载着粉丝的热情与期......
  • 计算机毕业设计django+vue大参林药品信息管理系统的设计与实现【开题+论文+程序】
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景在医疗健康行业蓬勃发展的今天,药品信息管理系统的建设对于提升药品管理效率、保障患者用药安全、促进医药企业健康发展具有重要意义。大参......