TP5结合聚合数据天气预报API查询天气

分享一个php版本的查询天气接口。免费查询天气的接口有很多,比如百度的apistore的天气api接口,我本来想采用这个接口的,可惜今天百度apistore死活打不开了。那就用聚合数据的天气api接口吧,也是免费的,不过聚合数据的接口申请相对繁琐。
1、注册一个聚合数据的账号
2、实名认证你的账号
3、申请你需要的api接口
4、申请验证你的api接口
申请地址:https://www.juhe.cn/docs/api/...
虽然是繁琐了很多,不过返回的信息确是非常的丰富。
好了,现在来分享一下,tp5中怎么整合进去。

config.php中,配置你的appkey:

//配置文件
return [
    
    'appkey' => ''  //此处填入你的key
];

common.php中放入请求的方法:

控制器中,index.php的代码:


// +----------------------------------------------------------------------
namespace app\weather\controller;

use think\Controller;

class Index extends Controller
{
    public function index()
    {
        return $this->fetch();
    }
    
    /**
     * 根据城市获取天气情况
     */
    public function getWeatherByCity()
    {
        $cityName = input('param.cityname');
        $url = "http://op.juhe.cn/onebox/weather/query";
        $appkey = config('appkey');
        
        $params = [
                "cityname" => $cityName,//要查询的城市,如:温州、上海、北京
                "key" => $appkey,//应用APPKEY(应用详细页查询)
                "dtype" => "",//返回数据的格式,xml或json,默认json
        ];
        $paramstring = http_build_query($params);
        
        $content = juhecurl($url, $paramstring);
        $result = json_decode($content, true);
        
        if( empty( $result ) ){
            return json( ['code' => -1, 'data' => '', 'msg' => '请求失败'] );
        }
        
        if( '0' != $result['error_code'] ){
            return json( ['code' => -2, 'data' => '', 'msg' => $result['error_code']." : ".$result['reason']] );
        }
        
        return json( ['code' => 1, 'data' => $result, 'msg' => 'success'] );
    }
}

view层中,index.html的代码如下:



  
  
    
    
    天气查询
    
    
    
  
    
    
    
    

通过浏览器访问页面如下:
TP5结合聚合数据天气预报API查询天气_第1张图片
json数据成功返回,这是你就可以根据你的需要渲染页面了。参数的讲解参照这里
https://www.juhe.cn/docs/api/...

你可能感兴趣的:(天气预报api,php)