前言
我首先得承认,标题有点扯了。不过下面主要是干货,使用Node.js确实能够根据自己的想法去快速构建一件事情。现在将构建过程呈现给大家
新建项目
在本地目录新建文件夹,命令行模式到新建的文件夹weather下,执行<code>npm init </code>
npm init
按照提示输入项目相关内容或者使用默认值。最终文件结构为
+ weather
- package.json
找一个可用的天气预报api
现在有很多提供免费天气预报api服务的厂商,大家可以随意找。我使用的是阿里云里面一个免费的 api https://market.aliyun.com/products/57126001/cmapi014302.html
使用淘宝账号可以购买。 购买成功后会将AppKey AppSecret AppCode信息发送给你,本次我们只用到了 AppCode。
使用request 发送get请求
request作为Node.js的一个发送请求的第三方模块在社区中非常受欢迎,使用方式轻巧,安装简单。 安装方式只需要<code>npm install request --save</code> 即可
npm install request --save
代码模型
根据天气预报api 可以看到请求格式为get 类型,需要在发送get的时候 添加Header信息。
使用方法
请求Header中添加的Authorization字段;
配置Authorization字段的值为“APPCODE + 半角空格 +APPCODE值”。
格式:
> Authorization:APPCODE AppCode值
根据api 说明,那么这个请求应该是这样的
var request = require('request');
var options = {
url: 'http://jisutqybmf.market.alicloudapi.com/weather/query',
headers: {
Authorization: 'APPCODE AppCode值'
}
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
var info = JSON.parse(body);
console.log(info)
}
}
request(options, callback);
请求发送出去,拿到服务器返回的天气值。下一步就是我们来处理下,显示我们想要的结果。
根据api 找到自己城市的cityid,加在请求uil参数上,即可。
最终代码
var request = require('request');
var options = {
url: 'http://jisutqybmf.market.alicloudapi.com/weather/query?cityid=24',
headers: {
'Authorization': 'APPCODE xxxxx你的购买appcode值xxxxx'
}
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
var info = JSON.parse(body)
var allweather = info.result;
var city = allweather.city,
date = allweather.date,
week = allweather.week,
nowtemp = allweather.temp;
console.log("现在是天气预报时间:今天是",date,week);
console.log(city,"的温度是",nowtemp);
}
}
request(options, callback);
打印一下 查看结果
C:\Users\zengyang\Desktop\weather> node .\cityweather.js
现在是天气预报时间:今天是 2017-07-07 星期五
上海 的温度是 34