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实现截取中文字符串不出现?号的解决方法

    PHP实现截取中文字符串不出现?号的解决方法

    这篇文章主要介绍了PHP实现截取中文字符串不出现?号的解决方法,涉及php字符串遍历及编码转换等相关操作技巧,需要的朋友可以参考下
    2016-12-12
  • PHP COOKIE及时生效的方法介绍

    PHP COOKIE及时生效的方法介绍

    本篇文章主要是对PHP中COOKIE及时生效的方法进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2014-02-02
  • PHP上传文件时文件过大$_FILES为空的解决方法

    PHP上传文件时文件过大$_FILES为空的解决方法

    发现一张gif图片上传失败 size为0,实际大小为4.66M,下面为大家介绍下PHP上传文件时文件过大的解决方法
    2013-11-11
  • php去除换行符的方法小结(PHP_EOL变量的使用)

    php去除换行符的方法小结(PHP_EOL变量的使用)

    本来在unix世界换行就用/n来代替,但是windows为了体现他的不同,就用/r/n,更有意思的是在mac中用/r。因此unix系列用 /n,windows系列用 /r/n,mac用 /r,这样就用你写的程序在不同的平台上运行有着不少的麻烦
    2013-02-02
  • 详解PHP解决守护进程Redis假死

    详解PHP解决守护进程Redis假死

    公司业务有一个常驻后台运行的守护进程。在这个守护进程当中使用了 Redis List 结构保存业务数据进行队列消费。结果运行过程中,有时候半个月,有时候几个月就会突然不再消费队列里面的数据。我们发现进行心中检测之后,程序的稳定性大大提高。
    2021-06-06
  • PHP常用工具函数小结【移除XSS攻击、UTF8与GBK编码转换等】

    PHP常用工具函数小结【移除XSS攻击、UTF8与GBK编码转换等】

    这篇文章主要介绍了PHP常用工具函数,结合实例形式总结分析了php移除XSS攻击、以及php操作UTF8与GBK编码转换等相关操作自定义函数实现方法,需要的朋友可以参考下
    2019-04-04
  • PHP使用mysql_fetch_row查询获得数据行列表的方法

    PHP使用mysql_fetch_row查询获得数据行列表的方法

    这篇文章主要介绍了PHP使用mysql_fetch_row查询获得数据行列表的方法,涉及php中使用mysql_fetch_row操作数据库的技巧,需要的朋友可以参考下
    2015-03-03
  • thinkphp查询,3.X 5.0方法(亲试可行)

    thinkphp查询,3.X 5.0方法(亲试可行)

    下面小编就为大家带来一篇thinkphp查询,3.X 5.0方法(亲试可行)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • 详解PHP渗透测试文件包含漏洞与利用

    详解PHP渗透测试文件包含漏洞与利用

    这篇文章主要介绍了PHP渗透测试文件包含漏洞与利用,文件漏洞是一个非常常见的漏洞,这种类型的漏洞虽然有些难以利用,但一旦利用成功就会造成非常危险的后果。本文将详细讲讲PHP反序列化漏洞的原理及示例,感兴趣的可以了解一下
    2022-07-07
  • PHP SESSION机制的理解与实例

    PHP SESSION机制的理解与实例

    今天小编就为大家分享一篇关于PHP SESSION机制的理解与实例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03

最新评论