首页 > 其他分享 >使用Vue 3和Axios从第三方API获取异步数据并展示

使用Vue 3和Axios从第三方API获取异步数据并展示

时间:2024-07-01 15:59:50浏览次数:21  
标签:API Axios vue Vue axios data

在前端开发中,从第三方 API 获取数据并动态展示是非常常见且重要的需求之一。今天我们将深入探讨如何使用 Vue 3 和 Axios 从第三方 API 获取异步数据并将其展示在页面上。通过这个例子,你将了解如何在 Vue 3 中集成 Axios,如何进行异步请求,以及如何动态地将数据绑定到模板以实现实时内容更新。

前置条件

在开始之前,请确保你已经具备以下条件:

  1. 安装了 Node.js 和 npm。
  2. 基本了解 Vue.js 和 JavaScript。

创建一个新的 Vue 3 项目

首先,我们需要创建一个新的 Vue 3 项目。如果你还没有安装 Vue CLI,可以使用以下命令进行安装:

npm install -g @vue/cli

安装完成后,使用以下命令创建一个新的 Vue 项目:

vue create vue-axios-demo

选择默认配置或根据需求自定义配置。创建项目后,进入项目目录:

cd vue-axios-demo

安装 Axios

Axios 是一个基于 Promise 的 HTTP 客户端,用于在浏览器和 Node.js 中发出 HTTP 请求。我们需要在项目中安装 Axios:

npm install axios

项目结构

项目的基础结构如下:

vue-axios-demo
├── node_modules
├── public
├── src
│   ├── assets
│   ├── components
│   ├── views
│   ├── App.vue
│   ├── main.js
├── .gitignore
├── babel.config.js
├── package.json
├── README.md
└── vue.config.js

创建组件

src/components 目录下创建一个新的组件文件 DataFetcher.vue,这个组件将用于从第三方 API 获取数据并展示。

文件内容如下:

<template>
  <div class="data-fetcher">
    <h1>Data from Third-Party API</h1>
    <div v-if="loading">Loading...</div>
    <div v-if="error">{{ error }}</div>
    <ul v-if="data">
      <li v-for="item in data" :key="item.id">{{ item.name }}</li>
    </ul>
  </div>
</template>

<script>
import axios from 'axios';

export default {
  name: 'DataFetcher',
  data() {
    return {
      data: null,
      loading: true,
      error: null,
    };
  },
  created() {
    this.fetchData();
  },
  methods: {
    async fetchData() {
      try {
        const response = await axios.get('https://api.exapmle.com/data'); // 替换为实际API地址
        this.data = response.data;
      } catch (err) {
        this.error = 'Failed to load data';
      } finally {
        this.loading = false;
      }
    },
  },
};
</script>

<style scoped>
.data-fetcher {
  padding: 20px;
}

.loading {
  font-size: 1.5em;
  color: #666;
}

.error {
  color: red;
}

ul {
  list-style-type: none;
  padding: 0;
}

li {
  background: #f4f4f4;
  margin: 10px 0;
  padding: 10px;
  border-radius: 4px;
}
</style>

更新主应用组件

现在,我们需要将创建的 DataFetcher 组件添加到我们的主应用组件 App.vue 中。

更新 src/App.vue 文件如下:

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

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

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

<style>
#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>

运行项目

一切就绪之后,可以运行项目,查看效果:

npm run serve

打开浏览器,访问 http://localhost:8080,你应该会看到从第三方 API 获取的动态数据。

解释代码

  1. 模板部分(template):

    • 使用 v-if 指令条件性地渲染内容。<div v-if="loading"> 仅在加载数据时显示。
    • 展示错误信息时使用 <div v-if="error">{{ error }}</div>
    • 使用 v-if 指令检查数据是否存在,并使用 v-for 指令循环渲染数据列表。
  2. 数据部分(data):

    • 定义了三个数据属性:data 用于存储从 API 获取的数据,loading 表示加载状态,error 用于存储错误信息。
  3. 生命周期钩子(created):

    • 在组件创建时,调用 fetchData 方法获取数据。
  4. 方法部分(methods):

    • fetchData 方法使用了 async/await 语法进行异步数据请求。
    • 使用 Axios 的 get 方法发送 HTTP GET 请求以获取数据。
    • 请求成功时将响应数据存储到 data 属性中。
    • 请求失败时,将错误信息存储到 error 属性。
    • 最后,无论请求成功或失败,都将 loading 设置为 false 以停止加载状态。

总结

通过本文,我们实现了使用 Vue 3 和 Axios 从第三方 API 获取异步数据并展示。在前端开发中,掌握从 API 获取数据并渲染到页面是非常重要的技能。


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

在这里插入图片描述

标签:API,Axios,vue,Vue,axios,data
From: https://blog.csdn.net/yuanlong12178/article/details/140103178

相关文章

  • Vue整合echarts
    npm安装echartsnpminstallecharts-S安装好之后在<script>引入echartsimport*asechartsfrom'echarts'在template标签中引用<divid="main"style="width:100%;height:400px;">/div>在exportdefault中创建mounted页面元素渲染之后再触发完整V......
  • vue-element-admin搭建步骤
    克隆项目gitclonehttps://github.com/PanJiaChen/vue-admin-template.git进入项目目录cdvue-admin-template安装依赖npminstall--registry=https://registry.npm.taobao.org启动服务npmrundev浏览器访问 http://localhost:9528发布构建测试环境npmrun......
  • WebApi读取配置文件帮助类
    1///<summary>2///appsettings.json操作类3///</summary>4publicclassAppSettings5{6staticIConfigurationConfiguration{get;set;}7staticstringcontentPath{get;set;}89p......
  • springboot+vue前后端分离项目-vue项目搭建6-文件上传下载
    1.新增com/example/demo/controller/FileController.javapackagecom.example.demo.controller;importcn.hutool.core.io.FileUtil;importcn.hutool.core.util.IdUtil;importcn.hutool.core.util.StrUtil;importcom.example.demo.common.Result;importjakarta.ser......
  • 使用Swagger 3注解编写API文档详解
    在现代软件开发中,API文档的编写是至关重要的一环,它不仅能帮助开发者理解和正确使用API,还能提升团队协作效率。Swagger3是一个流行的API文档规范,通过注解的方式可以清晰地定义API的各个方面。本文将深入探讨Swagger3中常用的注解及其使用方法。@OpenAPIDefinition和@Inf......
  • 若依RuoYi-Vue分离版—PageHelper分页的坑
    若依RuoYi-Vue分离版—PageHelper分页的坑(一)读取分页属性(pageNum、pageSize)只支持Parameter对象(二)PageHelper分页本身的使用方式的坑(一)读取分页属性(pageNum、pageSize)只支持Parameter对象若依中的PageHelper的分页读取只支持get请求的Parameter对象例如:http://local......
  • uni-app编译错误:“hasInjectionContext“ is not exported by “node_modules/.pnpm/p
    1.问题背景当我们接手一个新的uni-app项目(最头疼了x_x),可能会想到删掉node_modules和pnpm-lock.yaml后,执行npminstall或npminstall重新安装依赖包,然后执行pnpmdev:mp-weixin编译,但可能会遇到如下错误:"hasInjectionContext"isnotexportedby"node_modul......
  • springboot+vue+mybatis农业信息管理_种植员+PPT+论文+讲解+售后
    网络的广泛应用给生活带来了十分的便利。所以把农业信息管理与现在网络相结合,利用java技术建设农业信息管理系统,实现农业信息管理的信息化。则对于进一步提高农业信息管理发展,丰富农业信息管理经验能起到不少的促进作用。农业信息管理系统能够通过互联网得到广泛的、全面的宣......
  • springboot+vue+mybatis奶茶管理系统+PPT+论文+讲解+售后
    由于科学技术的快速发展,人们的生活也与信息时代的发展相关。同时,随着市场化和经济化的发展,国内很多行业已经意识到了这一点,为了提升行业的竞争力,就应当率先把握机会。于是在互联网的默化潜移影响下,餐饮业相关网站就是在这种情况下产生和发展起来的。奶茶在线订购系统是一个面......
  • Vue 常见面试题及答案
    本人详解作者:王文峰,参加过CSDN2020年度博客之星,《Java王大师王天师》公众号:JAVA开发王大师,专注于天道酬勤的Java开发问题中国国学、传统文化和代码爱好者的程序人生,期待你的关注和支持!本人外号:神秘小峯山峯转载说明:务必注明来源(注明:作者:王文峰哦)学习教程(传......