建议大家使用FireFox、Opera、Safri、IE8+等主流浏览器访问本站,否则可能会出现不兼容等问题!

快乐双彩':NodeJs 调用百度天气API

Nodejs 凶恶的方块 5121次浏览 已收录 6个评论

前言:

广西快乐双彩官方网站 www.y6mg.cn 今天柴犬君又给本菜准备了一道题,nodeJS request ??榈饔冒俣華PI并在前台进行渲染输出。经过一天的折腾终于折腾出来了,另外获得了新技能API调用。NodeJs 调用百度天气API

开始:

先百度一下,百度天气API,果断发现了了下图,百度支持开发者调试, 经过观察,我们需要先调用城市ID API获得城市的唯一IP然后带入通过自己的apikey加上城市name和城市ID就可以获得天气信息。
NodeJs 调用百度天气API

好了,知道我们需要什么了就可以动手了,由于我直接用了visual studio (装了个插件),之间新建个express 4 改个 ejs模版渲染引擎,好了直接到routes文件夹下载入index 路由文件写入。

index.js文件:

?var express = require('express');
var router = express.Router();
var request = require('request');
//构建一个函数用来查询返回信息。
function tRequest(cityName, callback) {
 
 request.get(
 {
 url: '//apistore.baidu.com/microservice/cityinfo?cityname='+ encodeURI(cityName),
 }, function (error, response, body) {
 if (!error && response.statusCode == 200) {
 var cityCode = JSON.parse(body).retData.cityCode;
 if (JSON.parse(body).errNum=="0") {
 var querya= {
 url: '//apis.baidu.com/apistore/weatherservice/recentweathers?cityname=' + encodeURI(cityName)+ '&cityid=' + cityCode,
 headers: {
 "apikey":"d10ace00d1d553c6ac00b20c8076323e"
 }
 }
 } else {
 console.log('城市代号请求错误!')
 }
 
 request.get(querya, function (error, response, body) {
 if ((JSON.parse(body).errNum) == "0") {
 var queryb = JSON.parse(body).retData;
 console.log(queryb);

 var outCome = {
 "cityName": cityName,
 "data": queryb.today.date,
 "week": queryb.today.weak,
 "curTemp":queryb.today.curTemp,
 "fengxiang":queryb.today.fengxiang,
 "fengji": queryb.today.fengji,
 "hightemp": queryb.today.hightemp,
 "lowtemp": queryb.today.lowtemp,
 "Type": queryb.today.type,
 "index": queryb.today.index[0]
 }
 
 callback(outCome);
 } else {
 console.log('城市天气请求错误')
 }
 });
 }
 });
}



/* GET home page. */
router.get('/', function (req, res) {
 var cityName = '章丘';
 tRequest(cityName, function (data) {
 var resource = data;
 res.render('index',resource);
 });
 
});


module.exports = router;

注意:第二次查询的时候要使用百度开发者appkey,写在头文件里,因为不能使用中文来查询必须进行转码所以使用encodURL();对中文进行处理,我们以json的方式获得信息,并在前台进行渲染。

index.ejs (VIEW)前台文件:

由于API提供的信息很多,甚至有各种建议,就不依次进行渲染了,反正能够实现的了,在调试过程中我们要充分使用console.log();来分析程序的执行

<h1 style="margin-top:2px;margin-left:60px;"><%= cityName %></h1>
<div style="border:3px solid red; height:300px;width:700px;margin-top:2px;margin-left:60px;">
<h1><%= data %></h1>
 <%= week %>
 平均气温: <%= curTemp %>
 <%= fengxiang %>
 <%= fengji %></br>
最高气温 : <%= hightemp %>
最低气温: <%= lowtemp %>
 <%= Type %></br>
 <%= index.name %>
 <%= index.details %>
</div>

后记:

OK,完成了这个目标了,可以正常输出渲染了,今天的任务圆满结束,今天自己写的东西比较多,但是回调仍然生一些,需要更加努力。


方块网络 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明NodeJs 调用百度天气API!
喜欢 (0)or分享 (0)
avatar
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(6)个小伙伴在吐槽
  1. avatar
    厉害厉害
    中国淋浴房著名品牌2016-01-06 10:02 回复 Windows 7 | Chrome 31.0.1650.63
  2. avatar
    看看!
    199728382016-01-05 09:38 回复 Windows 7 | 搜狗浏览器 2.X
  3. avatar
    夢幻辰風祝博主元旦快乐!
    姜辰2015-12-31 22:03 回复 Windows 7 | Firefox 42.0
  4. avatar
    厉害,是不是同样的原理可以实现来访者的ip来显示所在地的天气
    吃过没|chiguomei.cn2015-12-28 23:52 回复 Windows 8.1 | Firefox 43.0
  • 日本不是那就你是喽。[大笑] 2019-03-13
  • 豆浆-热门标签-华商生活 2019-03-10
  • 这是很容易检验的!家庭是按需分配的,也是各尽所能的。笑博士在家中,除按需分配外,还有什么是需要从家中按劳分配的,跟大家讲讲如何? 2019-03-10
  • 纪念人民日报创刊70周年 重温历史动人瞬间 2018-08-12
  • 883| 58| 407| 938| 523| 199| 752| 254| 565| 454|