11.基于Vue的网络框架 vue-axios的应用

11.基于Vue的网络框架 vue-axios的应用
墨颜丶互联网有许多第三方API接口服务,使用这些我们可以很方便的开发个人使用的工具
使用vue-axios进行数据请求
axios
本身是一个基于promise的HTTP客户端工具,vue-axios针对Vue对axios进行了一层简单的包装。
promise ES6
特有的.then
正常的回调函数 .catch
发生错误时的回调函数
首先在vue项目工程下进行vue-axios模块的安装
1 | # npm 安装 |
安装完成后,可以检查package.json文件中是否已经添加了vue-axios的依赖,我们还需要在main.js文件中对其进行导入和注册
1 | // 导入vue-axios模块 |
vue-axios实用功能介绍
vue-axios中提供了许多快捷请求方法,其中url参数是请求的接口,config参数是选填的,用来配置请求的额外选项。
1 | axios.request(config) |
- 发送 GET 请求:使用 Axios 发送 GET 请求:
1 | axios.get('https://api.example.com/data') |
- 发送 POST 请求:使用 Axios 发送 POST 请求:
1 | axios.post('https://api.example.com/data', { name: 'John', age: 30 }) |
- 拦截器:可以使用 Axios 的拦截器来在请求和响应被处理前进行一些操作,例如添加请求头或处理错误:
1 | axios.interceptors.request.use(config => { |
Axios 提供了丰富的功能和选项,如请求和响应拦截、取消请求、设置请求超时等。它的简单易用性和丰富的功能使得它成为在 Vue 项目中进行 HTTP 请求的首选工具之一。
除了这些快捷方法外,可以通过向 axios API
传递相关配置来创建请求
axios(config)
1 | // 发送 POST 请求 |
axios(url[, config])
1 | // 发送 GET 请求(默认的方法) |
使用vue-axios请求天气数据
我们需要使用到element-plus
1 | npm install element-plus --save |
main.js
1 | // 导入Vue框架中的createApp方法 |
App.vue
1 | <template> |
1 | { |
1 | { |
Script 部分解释:
这段代码是从一个 API 获取天气数据,并对这些数据进行处理以显示在 Vue 应用中。我将逐一解释这段代码的每个部分。
导入 Axios:
1 | import axios from 'axios'; |
- 作用:从
axios
库中导入axios
对象。axios
是一个流行的 HTTP 客户端,用于发送 HTTP 请求。
Vue 组件导出:
1 | export default { |
- 作用:定义并导出一个 Vue 组件。
Mounted 生命周期钩子:
1 | mounted() { |
- 作用:当组件被挂载到 DOM 上时执行。
- axios.defaults.baseURL:设置
axios
的全局基本 URL。所有的axios
请求都会使用这个 URL 作为前缀。 - this.requestID():调用
requestID
方法来初始化天气数据的请求。
Data 函数:
1 | data() { |
- 作用:定义组件的响应式数据。
- city:用户输入的城市名称。
- cityID:城市的标识符,默认为上海。
- daily, todayData, plc, futureData:分别用于存储每日天气数据、当天天气数据、无数据时的占位符和未来天气预报数据。
Watch 属性:
1 | watch: { |
- 作用:监听
city
属性的变化。 - this.requestID():当
city
发生变化时,调用requestID
方法以获取新的城市ID并请求相应的天气数据。
requestID 方法
1 | // 获取城市ID |
作用: 获取用户输入的城市的ID。
流程:
- 检查
city
是否为空。如果为空,使用默认的城市ID(上海)并请求天气数据。 - 如果
city
不为空,将城市名进行 URL 编码,构建查询城市ID的 API 请求。 - 使用
axios.get
向 API 发送请求。 - 请求成功后,从响应中提取城市ID,并用它请求天气数据。
- 如果请求失败,输出错误信息到控制台。
- 检查
requestData 方法:
这个方法的目的是向一个天气 API 发送请求,获取指定城市的天气数据。
1 | requestData() { |
API URL: 使用模板字符串构建 API 请求的 URL。这里
this.cityID
是城市的标识符,用于获取特定城市的天气。axios.get: 发送一个 GET 请求到上面构建的 URL。Axios 是一个流行的 HTTP 客户端库。
.then()
: 当请求成功时执行。
1
response
对象包含 API 返回的数据。
response.data.daily
: 从 API 响应中获取天气数据,通常是一个数组,其中每个元素代表一天的天气。this.daily
: 存储从 API 获取的天气数据。this.todayData
: 存储数组中的第一个元素,即今天的天气数据。this.prepareFutureData()
: 调用另一个方法来处理和格式化未来几天的天气数据。
.catch(): 如果请求失败(例如,因为网络问题或服务器错误),则执行错误处理。
prepareFutureData 方法:
这个方法用于处理和格式化未来几天的天气数据,以便在 Vue 应用中显示。
1 | prepareFutureData() { |
- Array.map(): 这是 JavaScript 中的一个数组方法,用于将数组中的每个元素通过一个函数映射(转换)为新的元素,最终返回一个新的数组。
- day:
map
方法的回调函数接收daily
数组中的每个元素作为参数day
。day
是一个对象,包含了特定日期的天气数据。 - 在
map
方法的回调函数中,创建了一个新的对象,其中包含格式化的日期、温度范围、白天的天气情况和风向。 - this.futureData: 最终,
this.futureData
被赋值为map
方法返回的新数组,这个数组包含了格式化后的未来天气数据。
formatFxDate 方法
1 | // 格式化日期 |
作用: 将日期字符串中的
-
替换为/
,以便更友好地展示日期。流程
:
- 检查传入的
date
是否为字符串类型。 - 如果是字符串,则使用
replace
方法进行格式化。 - 如果不是字符串,返回默认字符串“日期未知”。
- 检查传入的
总结来说,requestData
方法从 API 获取天气数据,并存储在组件的数据属性中。然后,prepareFutureData
方法处理这些数据,将其转换为一个更易于在应用中显示的格式。map
方法在这里被用于创建一个新的数组,其中的每个元素都是通过 day
参数进行转换的结果。