前言
我首先得承認,標題有點扯了。不過下面主要是干貨,使用Node.js確實能夠根據(jù)自己的想法去快速構建一件事情?,F(xiàn)在將構建過程呈現(xiàn)給大家
新建項目
在本地目錄新建文件夾,命令行模式到新建的文件夾weather下,執(zhí)行<code>npm init </code>
npm init
按照提示輸入項目相關內(nèi)容或者使用默認值。最終文件結(jié)構為
+ weather
- package.json
找一個可用的天氣預報api
現(xiàn)在有很多提供免費天氣預報api服務的廠商,大家可以隨意找。我使用的是阿里云里面一個免費的 api https://market.aliyun.com/products/57126001/cmapi014302.html
使用淘寶賬號可以購買。 購買成功后會將AppKey AppSecret AppCode信息發(fā)送給你,本次我們只用到了 AppCode。
使用request 發(fā)送get請求
request作為Node.js的一個發(fā)送請求的第三方模塊在社區(qū)中非常受歡迎,使用方式輕巧,安裝簡單。 安裝方式只需要<code>npm install request --save</code> 即可
npm install request --save
代碼模型
根據(jù)天氣預報api 可以看到請求格式為get 類型,需要在發(fā)送get的時候 添加Header信息。
使用方法
請求Header中添加的Authorization字段;
配置Authorization字段的值為“APPCODE + 半角空格 +APPCODE值”。
格式:
> Authorization:APPCODE AppCode值
根據(jù)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);
請求發(fā)送出去,拿到服務器返回的天氣值。下一步就是我們來處理下,顯示我們想要的結(jié)果。
根據(jù)api 找到自己城市的cityid,加在請求uil參數(shù)上,即可。
最終代碼
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("現(xiàn)在是天氣預報時間:今天是",date,week);
console.log(city,"的溫度是",nowtemp);
}
}
request(options, callback);
打印一下 查看結(jié)果
C:\Users\zengyang\Desktop\weather> node .\cityweather.js
現(xiàn)在是天氣預報時間:今天是 2017-07-07 星期五
上海 的溫度是 34