thinkphp使用url请求调用ThinkApi天气教程【图文详解】

 更新时间:2023年07月05日 08:41:05   作者:PHP太baby咯  
这篇文章主要介绍了thinkphp使用url请求调用ThinkApi天气的方法,结合实例形式详细分析了thinkphp服务市场接口的注册、接口调用、信息发送、获取相关操作技巧与注意事项,需要的朋友可以参考下

前言

        看了一年多的thinkphp手册,我才发现了这个国内比较便宜的(主要免费的接口和对应次数比较多)Api服务商,虽然在使用之后发现部分接口的返回值没有某合返回的数据要多以及类似内容审核的不够严谨,不过在我看来非常适合框架新手玩家去试一试调用接口的快乐~以下带来详细教程~

一、注册ThinkPHP服务市场账号

服务市场首页链接

进入首页后点击右上角,注册、实名过程我就不说了。

二、拿到自己的AppCode(因为调用接口需要啦)

(1)点击我的服务

 (2)点击安全信息

 三、随便找个免费的接口试试~

偷懒~用大家喜闻乐见的天气接口吧~

(每天一百次,这不比前段时间每天10次的某合数据友好?足够让大家慢慢调试数据~)

 (1)发起请求代码(放公共方法中,若不用框架,可与调用方法同层放置)

/**
 * 发送HTTP请求方法
 * @param  string $url    请求URL
 * @param  array  $params 请求参数
 * @param  string $method 请求方法GET/POST
 * @return array  $data   响应数据
 */
function http($url, $params, $method = 'GET', $header = array(), $multi = false){
    $opts = array(
        CURLOPT_TIMEOUT        => 30,
        CURLOPT_RETURNTRANSFER => 1,
        CURLOPT_SSL_VERIFYPEER => false,
        CURLOPT_SSL_VERIFYHOST => false,
        CURLOPT_HTTPHEADER     => $header
    );
    /* 根据请求类型设置特定参数 */
    switch(strtoupper($method)){
        case 'GET':
            $opts[CURLOPT_URL] = $url . '?' . http_build_query($params);
            break;
        case 'POST':
            //判断是否传输文件
            $params = $multi ? $params : http_build_query($params);
            $opts[CURLOPT_URL] = $url;
            $opts[CURLOPT_POST] = 1;
            $opts[CURLOPT_POSTFIELDS] = $params;
            break;
        default:
            throw new Exception('不支持的请求方式!');
    }
    /* 初始化并执行curl请求 */
    $ch = curl_init();
    curl_setopt_array($ch, $opts);
    $data  = curl_exec($ch);
    $error = curl_error($ch);
    curl_close($ch);
    if($error) throw new Exception('请求发生错误:' . $error);
    return  $data;
}

(2)调用Api代码

public function test()
    {
        $url = 'https://api.topthink.com/weather/query';
        $param = [
            'appCode'=>'填之前(二)里面自己的Appcode',
            'city'=>'重庆'
        ];
        $header = array("Content-Type: application/x-www-form-urlencoded; charset=UTF-8");
        //must have it ↑
        $res = http($url,$param,'GET',$header);
        $res = json_decode($res,true);
        if($res['code']!=0)
            return \json('接口调用出错啦');
        var_dump($res);
    }

(3)康康结果?

四、总结一下

         除了数据库小子以外,面向接口开发也是一个phper必不可少的一项技能,如thinkApi返回的那个json数据格式,我的经验标准是:

code0 一般代表成功,其他的分别代表除成功以外的各种情况
msg用于描述接口返回的各种情况说明,如成功亦或捕获到抛出的错误
data用于装载前端需要的数据,里面的数据格式根据前端的需求来修改制定

        那么这些标准从哪里来的呢?当然是每次调用接口的时候发现Tencent以及Alibaba那些大佬是这样返回的数据,久而久之就成了我们后者学习的标杆咯~

多嘴一句记录一下:(初学者可以不看啦~)

        为什么要用Url请求,不用SDK?因为后者涉及使用composer的版本管理问题,在thinkphp5.0版本使用SDK会牵涉到php7.1+ - 8.0+版本警告问题以及thinkphp框架5.0.24- 5.1及以上版本的框架结构改变等问题,简而言之:在tp5.0版本使用composer安装thinkApi的SDK之后我们的 thinkphp目录下的start.php会消失,内部的一些框架方法会抛出警告,而composer又不能智能为你此时的5.0框架安装他能够接受的SDK,而不去改变他的结构,故在遇到某些情况(如调用此SDK的接口不多)的时候我们可以退而求之使用url请求来避免版本管理的问题。

此外,关于天气查询相关接口还有如下几种可供选择:

  1. 阿里云天气API:https://next.api.aliyun.com/document/AliGenie/ssp_1.0/GetWeather
  2. 和风天气API:https://dev.qweather.com/docs/configuration/api-config/
  3. 心知天气API:https://seniverse.yuque.com/hyper_data/datasets/start?

感兴趣的朋友可以进一步了解一下~

相关文章

  • php实现的rc4加密解密类定义与用法示例

    php实现的rc4加密解密类定义与用法示例

    这篇文章主要介绍了php实现的rc4加密解密类定义与用法,结合完整实例形式给出了php rc4加密解密类文件class.rc4crypt.php的定义及相关使用技巧,需要的朋友可以参考下
    2018-08-08
  • php 魔术方法详解

    php 魔术方法详解

    本文给大家介绍了php面向对象当中的几个魔术方法,并对此进行一一详细介绍,希望对新手有所帮助。
    2014-11-11
  • mysql_num_rows VS COUNT 效率问题分析

    mysql_num_rows VS COUNT 效率问题分析

    mysql_num_rows 和 count( * ) 都能统计总数,那个能好一点呢?
    2011-04-04
  • PHP实践教程之过滤、验证、转义与密码详解

    PHP实践教程之过滤、验证、转义与密码详解

    我们在开发应用时,一般有个约定:不要信任任何来自不受自己控制的数据源中的数据。所以这个时候就用到了这篇文章介绍的内容,本文主要给大家介绍了关于PHP实践教程之过滤、验证、转义与密码的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-07-07
  • PHP定时自动生成静态HTML的实现代码

    PHP定时自动生成静态HTML的实现代码

    为了提高网站的访问速度,我们往往采用生成静态的方式来实现,这样确实把网站的访问速度提高了非常多.
    2010-06-06
  • PHP与Java对比学习日期时间函数

    PHP与Java对比学习日期时间函数

    本文给大家介绍的是从Java和PHP进行对比复习了下日期时间的处理函数,并给出了一些示例,希望对大家能够有所帮助
    2016-07-07
  • PHP字符串 ==比较运算符的副作用

    PHP字符串 ==比较运算符的副作用

    PHP字符串 ==比较运算符的副作用,大家可以参考下。
    2009-10-10
  • PHP的变量类型和作用域详解

    PHP的变量类型和作用域详解

    什么是变量的作用域?变量的作用域是指在脚本的一次生命周期内变量的有效范围。一般来说有全局和局部之分
    2014-03-03
  • PHP+MySQL实现模糊查询员工信息功能示例

    PHP+MySQL实现模糊查询员工信息功能示例

    这篇文章主要介绍了PHP+MySQL实现模糊查询员工信息功能,结合实例形式分析了php连接mysql数据库及使用like语句进行模糊查询与显示相关操作技巧,需要的朋友可以参考下
    2018-06-06
  • php实现图片上传、剪切功能

    php实现图片上传、剪切功能

    这篇文章主要为大家详细介绍了php实现图片上传、剪切功能,具有一定的参考价值,感兴趣的朋友可以参考一下
    2016-05-05

最新评论