Vue调用和风天气API(详细步骤,含源码)

和风天气

和风天气官网: https://www.qweather.com/
和风天气提供全球天气预报、气象可视化、商业化气象服务和天气API数据,包括30天预报、灾害预警、空气质量AQI、历史天气、生活指数、分钟降水、交通天气等
主要是:免费
在这里插入图片描述

第一步:注册账号,自己注册登录就行。注册网址: https://id.qweather.com/#/register
在这里插入图片描述

第二步:进入控制台
在这里插入图片描述
第三步:创建应用
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
第四步:获取key
在这里插入图片描述
第五步:进去开发者文档
在这里插入图片描述
城市信息搜索必须参数有两个:location和key
location:你要搜索的城市名(最小范围到县)
key:前面保存的key

在这里插入图片描述
实况天气请求必须参数也是两个:location和key
location:根据前面城市查询获取到的城市ID
key:前面保存的key

准备完成后,开始代码编写

源代码(不愿意看过程的,可以直接看源代码)

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<script src="js/vue.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<div id="app">
			<form>
				<input type="text" v-model="city">
				<button @click.prevent="searchWeather">提交</button>
			</form>
			<div id="weather">
				<h1>新API</h1>
				<h2>{{tmpNew}}</h2>
				<h3>{{briefNew}}</h3>
			</div>
			<div id="weather">
				<h1>老API</h1>
				<h2>{{tmpOld}}</h2>
				<h3>{{briefOld}}</h3>
			</div>
		</div>
	</body>
	<script>
		var app = new Vue({
			el:"#app",
			data:{
				city:"广州",
				tmpNew:"",
				briefNew:"",
				tmpOld:"",
				briefOld:"",
				
			},
			methods:{
				searchWeather:async function(){//注意:这里有 async 用来完成异步操作
					//由于调用api是异步操作
					//在请求的时候需要用async+await让它同步,否则数据不好取出
					//如果没有await返回的是一个Promise 对象,我学术短浅,暂时没学到,不会取

					let key = ""//引号中放入前面保存的key

					//方法一:老的API
					//老的api
					//这里的引号是tab键上面的引号,主要作用是方便数据拼接
					let httpUrlOld=`https://free-api.heweather.net/s6/weather/now?location=${this.city}&key=${key}`
					let resOld = await fetch(httpUrlOld)//请求数据
					let resultOld = await resOld.json()//将请求的数据转换为json数据类型
					let nowOld = resultOld.HeWeather6[0].now//获取到json数据中的实况天气
					console.log(nowOld)
					this.tmpOld = nowOld.tmp;//获取到当前温度
					this.briefOld = nowOld.cond_txt;//获取到当前天气

					//方法二:新的API
					//获取城市的ID
					let httpUrl = `https://geoapi.qweather.com/v2/city/lookup?location=${this.city}&key=${key}`
					let res = await fetch(httpUrl)
					let result = await res.json()
					let id = result.location[0].id
					//根据城市id获取具体的天气
					let httpUrl1 = `https://devapi.qweather.com/v7/weather/now?location=${id}&key=${key}`
					let res1 = await fetch(httpUrl1)
					let result1 = await res1.json()
					let now = result1.now
					this.tmpNew =now.temp
					this.briefNew = now.text
				}
			}
		})
	</script>
</html>

运行效果截图:
在这里插入图片描述
注:如有错误或可以改进的地方,欢迎各位指正学习!

<think>好的,用户想了解如何在JavaScript中使用和风天气API的方法,需要教程和示例代码。我需要先回顾一下用户提供的引用内容,看看有没有相关的信息。引用3提到了Vue使用和风天气API的例子,其中有一个插入天气的方法,使用了script标签引入外部JS文件,并配置了WIDGET对象。这可能是一个小部件的方式,但用户可能需要的是直接通过API获取数据,而不是嵌入小部件。引用4提到Ajax通过城市名获取数据,使用全国天气预报API,但具体到和风天气可能需要不同的处理。 用户的问题集中在JavaScript的使用方法,所以需要给出具体的步骤,比如注册API key、发起请求、处理响应等。同时需要示例代码,可能包括直接使用fetch或者XMLHttpRequest的例子。另外,引用3中的代码示例可能可以作为参考,但需要调整成更通用的JavaScript代码,而不是Vue特定的方法。还要注意用户提到的调试困难,所以可能需要强调常见的错误点,比如问题、API key的正确使用等。 还需要考虑用户可能需要的功能,比如获取实时天气天气预报等,可能需要不同的API端点。确保步骤清晰,分点说明,并给出代码示例。另外,用户提供的引用中有GitHub示例链接,可以建议用户参考,但可能需要补充说明。最后,生成相关问题,帮助用户进一步学习,比如处理、解析数据等。</think>### JavaScript中使用和风天气API的方法 #### 1. 注册并获取API Key - 访问[和风天气开发者平台](https://dev.qweather.com/),注册账号并创建项目,获取API Key(如示例中的`82898b167593451b81c7ce87a89135d0`[^3])。 #### 2. 基础请求示例(城市实时天气使用`fetch`发起请求: ```javascript const apiKey = 'YOUR_API_KEY'; const cityId = 'CN101230101'; // 城市ID,如福州 const apiUrl = `https://devapi.qweather.com/v7/weather/now?location=${cityId}&key=${apiKey}`; fetch(apiUrl) .then(response => response.json()) .then(data => { if (data.code === '200') { const temp = data.now.temp; const text = data.now.text; console.log(`当前温度:${temp}℃,天气:${text}`); } else { console.error('请求失败:', data); } }) .catch(error => console.error('请求错误:', error)); ``` #### 3. 使用城市名称查询(需先获取城市ID) ```javascript const citySearchUrl = `https://geoapi.qweather.com/v2/city/lookup?location=福州&key=${apiKey}`; fetch(citySearchUrl) .then(response => response.json()) .then(data => { if (data.code === '200') { const cityId = data.location[0].id; // 使用cityId继续请求天气数据 } }); ``` #### 4. 嵌入天气小部件(参考官方组件) 引用Vue示例中的实现方式[^3]: ```javascript function loadWeatherWidget() { window.WIDGET = { CONFIG: { layout: '2', width: 300, key: 'YOUR_API_KEY', city: 'CN101230101' } }; const script = document.createElement('script'); script.src = 'https://widget.qweather.net/standard/static/js/he-standard-common.js'; document.body.appendChild(script); } ``` #### 注意事项 - **问题**:建议在服务端代理请求或使用JSONP(部分API支持) - **频率限制**:免费版每日有调用次数限制 - **数据解析**:响应数据包`obsTime`(数据观测时间)、`feelsLike`(体感温度)等字段 更多完整示例可参考GitHub仓库[^2]。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值