Node.js-20行代码实现一个天气预报

前言

我首先得承认,标题有点扯了。不过下面主要是干货,使用Node.js确实能够根据自己的想法去快速构建一件事情。现在将构建过程呈现给大家

新建项目

在本地目录新建文件夹,命令行模式到新建的文件夹weather下,执行npm init

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的一个发送请求的第三方模块在社区中非常受欢迎,使用方式轻巧,安装简单。 安装方式只需要npm install request --save 即可

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

你可能感兴趣的:(Node.js-20行代码实现一个天气预报)