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

前言

我首先得承认,标题有点扯了。不过下面主要是干货,使用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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容