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

php根据城市查询天气情况
看到有人分享java的查询全国天气情况的代码,于是我想分享一个php版本的查询天气接口。免费查询天气的接口有很多,比如百度的apistore的天气api接口,我本来想采用这个接口的,可惜今天百度apistore死活打不开了。那就用聚合数据的天气api接口吧,也是免费的,不过聚合数据的接口申请相对繁琐。

申请地址:https://www.juhe.cn/docs/api/id/73

1、注册一个聚合数据的账号
2、实名认证你的账号
3、申请你需要的api接口
4、申请验证你的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的代码如下:



  
  
    
    
    天气查询
    
    
    
  
    
    
    
    

通过浏览器访问页面如下:


输入你要查询的城市,比如:南京,点击查询


json数据成功返回,这是你就可以根据你的需要渲染页面了。参数的讲解参照这里
https://www.juhe.cn/docs/api/id/73

 

转载于:https://www.cnblogs.com/annie00/p/6068523.html

你可能感兴趣的:(TP5结合聚合数据API查询天气)