Node.js express 第三方天气接口

本来是http协议的第三方接口,前端jsonp请求的。页面是没有问题的,但是昨天配置了https

This request has been blocked; the content must be served over HTTPS.

一直在想办法解决,想最优解的。找了第三方https接口

推荐

和风天气 注册一个账号 有免费的,对于我们测试的已经够了,文档可以自己看看。

控制台,创建应用,得到key值
在这里插入图片描述

我是在利用express-generator 封装某个模块

var express = require('express');
var request = require('request');
var router = express.Router();

var key = "xxxxxxxx" //注册账号

var weatherUrl = "https://free-api.heweather.net/s6/weather/" //免费的统一接口前缀

router.get('/api', function (req, res, next) {
    const {type,cityName} = req.query;  // cityName 传递的时候可以 城市,省份
    const cityWeatherUrl = weatherUrl+type+"?location="+cityName+"&key="+key
    request(cityWeatherUrl,function(err, response, body) {
        if(!err){
            const weather = JSON.parse(body); // 内部是个数组,可能有重名(拼音)的,
            res.send({
                status:0,
                data:weather,
                message:'获取天气成功'
              })
        }else {
            res.send({
                status:-1,
                message:'获取天气失败'
              })
        }

    })
  });

module.exports = router;

前端

http:是axios,已经二次封装别名

 export const getWeather = (type,cityName) => http(BASE + "/api/weather/api", {type, cityName})
{
"HeWeather6": [
  {
	"basic": {
		"cid": "xxxx",
		"location": "xx",
		"parent_city": "xx",
		"admin_area": "xx",
		"cnty": "中国",
		"lat": "xxxxx",
		"lon": "xxxxx",
		"tz": "+8.00"
		},
	"update": {
		"loc": "2019-09-19 14:06",
		"utc": "2019-09-19 06:06"
		},
	"status": "ok",
	"now": {
		"cloud": "91",
		"cond_code": "101",
		"cond_txt": "多云",
		"fl": "24",
		"hum": "49",
		"pcpn": "0.0",
		"pres": "1016",
		"tmp": "25",
		"vis": "16",
		"wind_deg": "6",
		"wind_dir": "北风",
		"wind_sc": "3",
		"wind_spd": "14"
		}
	}
  ]
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值