本来是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"
}
}
]
}