axios实战学习——使用高德地图api接口数据实现天气查询案例

news2024/10/7 12:23:22

文章目录

  • 📋前言
  • 🎯案例介绍
    • 🧩关于高德开发平台
      • 1️⃣创建应用生成Key
      • 2️⃣查看API文档
    • 🧩测试接口
  • 🎯案例编写
  • 🎯实现效果


📋前言

关于这个Vue + axios 获取接口数据的操作,这篇文章就不过多的讲解了,上一篇关于axios的文章已经介绍过了,接下来我们直接来学习和了解一下如何使用高德开放平台(就是那个鲜为人知的高德地图)api接口来实现天气查询的案例。

详细看这篇文章:axios基础学习——通过 Vue + axios 获取接口数据的小demo

🎯案例介绍

首先在编写代码之前,我们要知道高德开放平台api接口怎么使用和创建。

🧩关于高德开发平台

1️⃣创建应用生成Key

网站地址:高德开放平台 | 高德地图API
首先注册好账号,然后在导航栏找到Web服务API。

在这里插入图片描述

找到天气查询这个API

在这里插入图片描述

然后点击申请Key创建应用并且生成Key密钥

在这里插入图片描述
在这里插入图片描述

随便起一个名字,然后选择应用类型为“天气”

在这里插入图片描述

建好以后,添加一个Key,选择“Web服务”

在这里插入图片描述
在这里插入图片描述

提交以后,自动生成Key密钥

在这里插入图片描述

2️⃣查看API文档

在使用的过程中发现,参数city的值可以为adcode(城市编码),也可以为中文名称。
在这里插入图片描述

主要请求头的名称以及返回数据的名称

在这里插入图片描述

🧩测试接口

完成以上的步骤以后,我们来试一下调用这个接口,看看返回的数据。
因为是js文件,所以运行在终端,node xxx.js。

const axios=require('axios')
const params = {
    key: '你的Key',
    city: '广州',
    extensions: 'all'
}
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
axios.get(
    'https://restapi.amap.com/v3/weather/weatherInfo?parameters', {
        params: {
            key: '你的Key',
            city: '广州',
            extensions: 'all'
        }
    }
).then((res) => {
    console.log(res.data);
    console.log(res.data.forecasts[0].casts[0]);
}).catch((err) => {
    console.log(err);
})

成功运行,调用接口获取到了广州的天气数据。

在这里插入图片描述

🎯案例编写

  • 首先这个案例用的是Vue3+axios,页面布局很简单,表单布局加内容显示,表单布局是输入框加一个按钮,在输入框输入你想查询的城市名字(输入框通过v-model双向绑定所要查询的城市),然后点击按钮进行查询。内容显示区域分为四个部分,分别是当天的天气情况以及未来三天的天气预测。

  • 上面的代码是用于测试的,以下代码是案例的完整代码,是写在脚手架上面的。

<template>
  <!-- <router-link to="/home-tools">
    <h1>返回</h1>
  </router-link> -->
  <p class="title">weather fortecast</p>
  <div class="serach">
      <input type="text" placeholder="Enter the city" v-model="params.city">
      <!-- <van-button plain type="primary">朴素按钮</van-button> -->
      <button @click="serachWeather">serach</button>
  </div>
  <div>
  </div>
  <div v-for=" item,index in params.weatherList" :key="index" class="msg">
        <div>
          <p v-show="index<1">城市:{{ params.area.province }}-{{ params.area.city }}</p>
          <p>日期:{{ item.date }} 星期{{ week[item.week] }}</p>
          <p>白天天气:{{ item.dayweather }}</p>
          <p>晚间天气:{{ item.nightweather }}</p>
          <p>白天温度:{{ item.daytemp }}℃</p>
          <p>晚间温度:{{ item.nighttemp }}℃</p>
          <p>风向:向{{ item.daywind }}~向{{ item.nightwind }}</p>
          <p>风力:{{ item.daypower }}级~{{ item.nightpower }}级</p>
        </div>

  </div>
</template>
<script>
import axios from 'axios'
export default {
  data () {
    return {
      week: [
        '日',
        '一',
        '二',
        '三',
        '四',
        '五',
        '六'
      ],
      params: {
        key: 'd540cda8c346b7efb5a558bb8b6a30a5',
        city: '广州',
        extensions: 'all',
        weatherList: {

        },
        area: {

        }
      }
    }
  },
  created () {
    this.serachWeather()
  },
  methods: {
    async serachWeather () {
      const params = this.params
      axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded'
      axios.get(
        'https://restapi.amap.com/v3/weather/weatherInfo', {
          params: this.params
        }
      ).then((res) => {
        params.weatherList = res.data.forecasts[0].casts
        params.area = res.data.forecasts[0]
        console.log(params.area)
      }).catch((err) => {
        console.log(err)
      })
    }
  }
}
</script>
<style lang="less" scoped>
*{
  margin: 0;
  padding: 0;
}

@font-face {
    font-family: 'ds';
    src: url('../../../font/DS-DIGIB.TTF');
}
.title{
  text-align: center;
  line-height: 2em;
  font-size: 24px;
  font-family: 'ds';
}
.serach{
  width: 18rem;
  height: auto;
  border: 2px solid #000;
  border-radius: 1rem;
  margin: 0 auto;
  display: flex;
  justify-content: flex-end;
  & input{
    border: none;
    outline: none;
    width: 10rem;
  }
  & input:hover{
    // border-bottom:1px solid #000;
    // text-decoration: underline;
  }
  & button{
    border: none;
    width: 6rem;
    border-radius: 1rem;
    margin-left: 1rem;
  }

}

.msg{
  // text-align: center;
  width: 20rem;
  height: auto;
  border: 1px solid #000;
  margin: 0 auto;
  margin-bottom: 2rem;
}
.msg:nth-last-child(4){
  margin-top: 1rem;
  & p:nth-child(1){
    color: red;

  }
  }
</style>

🎯实现效果

案例中接口返回的城市是广州,因此默认查询的是广州。

在这里插入图片描述


🎯点赞收藏,防止迷路🔥

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

UniRx之基础入门

什么是Rx 官方ReactiveX简介&#xff1a; An API for asynchronous programming with observable streams。 通过这句话我们可以得到&#xff1a; 1.首先Rx是个编程接口&#xff0c;不同语言提供不同实现。例如JVM语言中的RxJava。 2.使用场景&#xff0c;异步编程中。 3.基…

路由器 内核开发 流程

宽 带上网已经不是什么新鲜事情&#xff0c;人们对相关的网络器件已经不再陌生&#xff0c;比如说常见的路由器。对于一般的网络用户&#xff0c;他们能知道怎样使用路由器来上网、玩游戏等就 已经感到很满足了&#xff0c;通常情况下对路由器的深层技术很少去过问研究&#xf…

Matlab和PCL中的点云滤波

而在PCL中总结了几种需要进行点云滤波处理的情况&#xff0c;这几种情况分别是&#xff1a; (1)点云数据密度不规则需要平滑。 (2)因为遮挡等问题造成离群点需要去除。 (3)大量数据需要进行“下采样”(Downsample)。 (4)噪声数据需要去除。 对应的解决方法是&#xff1a; (1)按…

什么是ITIL中的变更管理

商业环境和客户期望在不断变化&#xff0c;数字化转型已成为各行各业企业成功的关键因素。数字化转型的关键在于利用可用 应对业务挑战和抓住机遇的技术。当你分解它时&#xff0c;数字化转型基本上是信息技术管理更好地消除有问题的领域&#xff0c;并使您的 IT 基础架构能够应…

WebView缓存机制

一 前言 由于H5具备 开发周期短、灵活性好 的特点&#xff0c;所以现在 Android App大多嵌入了 Android Webview 组件进行 Hybrid 开发 但我知道你一定在烦恼 Android Webview 的性能问题&#xff0c;特别突出的是&#xff1a;加载速度慢 & 消耗流量 今天&#xff0c;我将…

Django 模型的继承

Django 模型的继承项目管理模型关联关系模块的包管理模型的继承项目管理 到目前为止&#xff0c;都是属于httprunner中的用例部分&#xff0c;针对核心功能进行的开发工作&#xff0c;要把平台做成一个用户可以使用的程度还需要些额外的功能&#xff0c;比如项目管理&#xff…

13薪| 8k-14k Java开发工程师

"众推职聘”以交付结果为宗旨的全流程化招聘服务平台&#xff01;今日招聘信息↓工作内容1.参与软件项目和产品概要设计&#xff0c;负责详细功能设计、编码实现及相关文档编写&#xff1b;2.根据模块设计完成相应的模块编码及单元测试&#xff1b;3.对用户行为、需求及反…

zeek集群简述

Zeek不是多线程的&#xff0c;因此&#xff0c;一旦达到单处理器内核的限制&#xff0c;当前唯一的选择就是将工作负载分散到多个内核&#xff0c;甚至多个物理计算机上。Zeek的集群部署场景是构建这些大型系统的当前解决方案。Zeek附带的工具和脚本提供了一种结构&#xff0c;…

自注意力和位置编码(比较卷积神经网络、循环神经网络和自注意力)

在自注意力中&#xff0c;查询、键和值都来自同一组输入。 卷积神经网络和自注意力都拥有并行计算的优势&#xff0c;而且自注意力的最大路径长度最短。但是因为其计算复杂度是关于序列长度的二次方&#xff0c;所以在很长的序列中计算会非常慢。 为了使用序列的顺序信息&…

Nostr with NIP-05 Verification Guide

What is a NIPNIPs (Nostr Implementation Possibilities) document what MUST, what SHOULD and what MAY be implemented by Nostr-compatible relay and client software. See a complete list of nips here.NIP-05 提案是针对用户 Nostr 帐户的验证方法&#xff0c;可以将其…

The update is not applicable to your computer

在安装windows CVE-2022-44698补丁的时候出现了报错&#xff0c;"Windows Update Standalone Installer The update is not applicable to your computer" 1.找到漏洞对应的官方文章 CVE-2022-44698 - Security Update Guide - Microsoft - Windows SmartScreen S…

学术科研无从下手?27 条机器学习避坑指南,让你的论文发表少走弯路

内容一览&#xff1a;如果你刚接触机器学习不久&#xff0c;并且未来希望在该领域开展学术研究&#xff0c;那么这份为你量身打造的「避坑指南」可千万不要错过了。 关键词&#xff1a;机器学习 科研规范 学术研究 机器学习学术小白&#xff0c;如何优雅避坑坑、让自己的论文顺…

力扣sql简单篇练习(九)

力扣sql简单篇练习(九) 1 合作过至少三次的演员和导演 1.1 题目内容 1.1.1 基本题目信息 1.1.2 示例输入输出 1.2 示例sql语句 SELECT actor_id,director_id FROM ActorDirector GROUP BY actor_id,director_id HAVING count(timestamp)>31.3 运行截图 2 患某种疾病的患…

结构体内存对齐;内存优化

结构体需要根据数据类型进行内存对齐。 所有数据类型占据空间的大小&#xff0c;一定是它基础类型的倍数。 首先按照最大的数据类型格式来作为最小分割单元。 最大整数倍 struct stu {char gender;unsigned int age; }student1;int main() {printf("sizeof this struct i…

SpringCloud Config分布式配置中心

目录 一、概述 二、Config服务端配置与测试 配置读取规则 三、Config客户端配置与测试 bootstrasp.yml 四、Config客户端之动态刷新 一、概述 官网&#xff1a;Spring Cloud Config 微服务意味着要将单体应用中的业务拆分成一个个子服务&#xff0c;每个服务的粒度相对…

【Java】IDEA调试线上服务

目录IEDA打开线上服务对应的代码&#xff0c;Edit Configuration创建与远程服务的连接复制黄匡生成的参数&#xff0c;添加到服务器启动命令中服务器的服务重新启动&#xff0c;并注意调试端口5005是否被防火墙拦截本地IDEA启动&#xff0c;控制台打印如图即成功代码上加断点&a…

Linux做选择题时的要点

1.线程独有&#xff1a;栈&#xff0c;寄存器&#xff0c;信号屏蔽字&#xff0c;errno...等信息&#xff0c;因此各个线程各自有各自的栈区&#xff0c;但是堆区共用。 2.用户态线程的切换在用户态实现&#xff0c;不需要内核支持。 3.每个线程在进程虚拟地址空间中会分配拥…

部署在Docker中的iServer进行服务迁移

目录前言一&#xff1a;备份与恢复1.备份2.恢复二&#xff1a;迁移配置文件作者&#xff1a;kxj 前言 Linux 容器虚拟技术&#xff08;LXC&#xff0c;Linux Container&#xff09;是一种轻量级的虚拟化手段&#xff0c;它利用内核虚拟化技术提供轻量级的虚拟化&#xff0c;来…

【八大数据排序法】希尔排序法的图形理解和案例实现 | C++

第十七章 希尔排序法 目录 第十七章 希尔排序法 ●前言 ●认识排序 ●一、希尔排序法是什么&#xff1f; 1.简要介绍 2.图形理解 3.算法分析 ●二、案例实现 1.案例一 ●总结 前言 排序算法是我们在程序设计中经常见到和使用的一种算法&#xff0c;它主要是将一…

C++引用(特性+使用场景+常引用)

文章目录1. 概念2. 关于别名的理解3. 引用的特性1.引用必须在定义时初始化2.一个变量可以有多个别名3.引用一旦引用一个实体&#xff0c;再不能引用其他实体4.使用场景1. 引用做参数2. 引用做返回值1. 传值返回是否为n直接返回临时变量作为返回值2. 传引用返回编译器傻瓜式判断…