有哪些免费开放且收录城市较完整的天气 API 接口?天气预报查询接口

大雄 353 2022-09-05


一、使用天气预报接口并生成程序代码

根据聚合数据的使用说明,我们可以利用接口调试工具调试接口,我们这里利用ApiPost测试。

可以看到请求成功后的json格式如下:

{
    "reason": "查询成功!",
    "result": {
        "city": "郑州",
        "realtime": {
            "temperature": "24",
            "humidity": "100",
            "info": "小雨",
            "wid": "07",
            "direct": "东北风",
            "power": "2级",
            "aqi": "32"
        },
        "future": [
            {
                "date": "2021-07-23",
                "temperature": "23/28℃",
                "weather": "小雨转阴",
                "wid": {
                    "day": "07",
                    "night": "02"
                },
                "direct": "东风转北风"
            },
            {
                "date": "2021-07-24",
                "temperature": "24/31℃",
                "weather": "小雨转多云",
                "wid": {
                    "day": "07",
                    "night": "01"
                },
                "direct": "东北风转东风"
            },
            {
                "date": "2021-07-25",
                "temperature": "23/31℃",
                "weather": "多云",
                "wid": {
                    "day": "01",
                    "night": "01"
                },
                "direct": "东风转东南风"
            },
            {
                "date": "2021-07-26",
                "temperature": "24/31℃",
                "weather": "小雨",
                "wid": {
                    "day": "07",
                    "night": "07"
                },
                "direct": "东北风"
            },
            {
                "date": "2021-07-27",
                "temperature": "23/31℃",
                "weather": "小雨转晴",
                "wid": {
                    "day": "07",
                    "night": "00"
                },
                "direct": "东北风转南风"
            }
        ]
    },
    "error_code": 0
}

到这一步,我们已经拿到了未来7天的天气数据。

二、利用nodemailer在NodeJS中发送邮件

nodeJS的nodemailer用于发送邮件,很好用。通过以下命令安装即可使用:

npm install nodemailer

以下是我写的一个发送邮件的函数,其中邮箱账号和授权码可以在对应的邮箱服务商处获取。

/**
 * nodeJS 发送邮件
 *
 * */
function sendEmail(text){
    let nodemailer = require('nodemailer');
 
    let transporter = nodemailer.createTransport({
        service:"126",  //  邮箱
        secure:true,    //  安全的发送模式
        auth:{
            user:"be***er@126.com", //  发件人邮箱
            pass:"MLQ***PYU"//  授权码,在邮件服务商处获取,126邮箱的获取地址为:https://help.mail.163.com/faq.do?m=list&categoryID=197
        }
    })
 
    let mailOptions = {
        from:"be***er@126.com", // 发件人邮箱,同上面的发件人邮箱保持一致就行
        to:"3257132998@qq.com", // 收件人邮箱,也就是实时接收天气预报的邮箱
        subject:"天气实时监控系统", // 邮件主题(标题)
        text:text // 邮件征文
    }
 
    transporter.sendMail(mailOptions,(err,data) => {
        if(err){
            console.log(err);            res.json({status:400,msg:"send fail....."})
        }else{
            console.log(data);
            res.json({status:200,msg:"邮件发送成功....."})
        }
    })
}

// 测试发邮件
sendEmail('下雨了')

全国天气预报接口文档说明

全国天气预报接口地址

https://api.ip138.com/weather/
https://api.ip138.com/weather/

示例1(Linux命令行下执行)

请求方式

get

参数说明:
1. code string 行政区划代码 (可选)
2. ip string iP地址 (可选,默认为请求iP,仅当用户没有提供行政区划代码时有效)
3. callback string 回调函数(可选,默认为空)
4. token string 购买服务后会提供(必填)
5. type int 查询类型 1:今日天气 7:一周天气 (默认今日天气)
6. style int 天气icon样式 1|2|3

    样式1样式2样式3
       
       
       
curl "https://api.ip138.com/weather/?code=350229&callback=find&type=1" -H "token:cc87f3c77747bccbaaee35006da1ebb65e0bad57"

示例2

参数说明:
1. code string 行政区划代码 (可选)
2. ip string iP地址 (可选,默认为请求iP,仅当用户没有提供行政区划代码时有效)
3. callback string 回调函数(可选,默认为空)
4. token string 购买服务后会提供(必填)
5. type int 查询类型 1:今日天气 7:一周天气 (默认今日天气)
6. style int 天气icon样式 1|2|3

https://api.ip138.com/weather/?code=350229&type=1&callback=find&token=cc87f3c77747bccbaaee35006da1ebb65e0bad57

示例3(js引入推荐方案)

参数说明:
1. code string 行政区划代码 (可选)
2. ip string iP地址 (可选,默认为请求iP,仅当用户没有提供行政区划代码时有效)
3. callback string 回调函数 当前参数仅为jsonp格式数据提供(可选,默认为空)
4. type int 查询类型 1:今日天气 7:一周天气 (默认今日天气)
5. style int 天气icon样式 1|2|3
6. time string 时间戳(必填)
7. oid string 购买服务后提供(必填)
8. mid string 购买服务后提供(必填)
9. sign string 签名验证 (签名算法:md5("time=" + time + "&token=" + token))(必填)

https://api.ip138.com/weather/?code=350229&callback=find&time=20170102&oid={oid}&mid={mid}&sign=签名算法

选择获取行政区划代码: 110101 

 

行政区划代码列表说明

点击下载

JSONP返回示例

说明:ret 值为 ok 时 返回data查询结果数据 为err时返回msg错误信息

{
    "ret": "ok",    // ret 值为 ok 时 返回 data 数据 为err时返回msg数据
    "code": "350103", // 行政区划代码
    "province":"福建省",
    "city":"福州市",
    "area":"台江区",
    "data": [
        time:"14:20",                           //更新时间
        dayIcon:"http://p.abcache.com/ip138/image/tianqi1/d00.png", //天气图标
        dayWeather:"晴转多云",                      //白天天气
        dayTemp:"18",                        //白天温度
        dayWind:"微风",                          //白天风力
        "nightIcon":"http://p.abcache.com/ip138/image/tianqi1/n01.png", //天气图标
        nightWeather:"中度霾转多云",              //夜晚天气
        nightTemp:"9",                          //夜晚温度
        nightWind:"微风",                        //夜晚风力
        temp"9",                                //实时温度
        "Icon":"http://p.abcache.com/ip138/image/tianqi1/d00.png" //天气图标
        weather:"多云",                          //实时天气
        wind:"北风1级",                          //实时风力
        humidity:"82"                           //湿度
        pm25:11                                 //pm
    ]
}

查询token使用情况

URL

https://api.ip138.com/status/

请求方式

get

参数

1. token `string`

示例

https://api.ip138.com/status/?token=cc87f3c77747bccbaaee35006da1ebb65e0bad57

响应

{
    "ret":"ok",
    "data":{
        "reqs":10,   //当前小时请求数
        "hour":3000, //当前小时购买次数
        "package":19767 //配额次数
    }
}

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:最好用的天气查询接口,全国天气预报查询接口
下一篇:决赛顶着巨大压力,张雨霏直言“战胜了自己”!
相关文章

 发表评论

暂时没有评论,来抢沙发吧~