PHP接口封装

接口大全

free-api

什么是API接口

api接口指的是应用程序编程接口(Application Programming Interface)。
是一些预先定义的函数,或指软件系统不同组成部分衔接的约定。
用来提供应用程序与开发人员基于某软件或硬件得以访问的一组例程,
而又无需访问原码,或理解内部工作机制的细节。

我们通过API接口可以实现特定的功能,而不需要了解其内部实现细节。
可以把API接口理解为是特定服务的一种封装,将服务封装起来提供给他人调用,这样一来很多功能不需要从新开发。

另外,不同系统和编程语言之间的数据通讯往往也采用API形式进行数据交接。

常见的API形式有哪些?

1、HTTP类型接口

基于HTTP协议提供的API,这类API常常以“网址”形式提供的,像现在主流的RESTful就属于这类接口。

2、RPC接口

RPC它是指远程过程调用,将一部分代码逻辑放在远程服务器上部署,
然后在需要的地方调用即可(调用远程方法就像调用本地方法一样)。
本质上是Client/Server模式,而且支持多种协议和数据传输方式。

3、Web Service 接口

Web Service并不具象地指某种API,我们将以WEB形式提供的服务都称之为Web Service。
像RESTful也属于Web Service。

天气预报API

第一步:打开聚合数据里面有一些免费的API接口可以使用,但是次数会有限制
第二步:注册账号,如果有账号就直接登录,注册完后再去个人中心—>账号管理—>实名认证,进行实名
第三步:实名认证通过后就选想要使用的API,例如选天气预报API,点击进入天气预报API的详细页后点击申请
第四步:写前端请求后端的代码,新建一个weather.html
第五步:写接收前端的数据进行处理的代码,新建一个weather.php
第六步:测试API调用是否成功
注意:如果遇到服务级错误码系统级错误码错误码格式这三个里的其中一个,请参考该API的文档
聚合API接口地址:http://apis.juhe.cn/simpleWeather/query
集合API接口Key:9ab6176129dbb280b54721e4da1a1e78

IP查询

聚合API接口地址:http://apis.juhe.cn/ip/ipNew
集合API接口Key:0d299c6f416192337e0907a013b9be4d

查询手机号码(段)归属地

聚合API接口地址:http://apis.juhe.cn/mobile/get
集合API接口Key:a58be0b1bcdcf717426a74be95c5f63d

智能聊天机器人接口

接口地址:http://api.qingyunke.com

请求Api例子

调用天气预报API

<?php
// 请求的接口URL
$apiUrl = 'http://apis.juhe.cn/simpleWeather/query';
// 请求参数
$params = [
    'city' => '苏州', // 要查询的城市
    'key' => '您申请的接口调用Key'
];
$paramsString = http_build_query($params);

// 发起接口网络请求
$response = juheHttpRequest($apiUrl, $paramsString , 1);
$result = json_decode($response, true);
if ($result) {
    $errorCode = $result['error_code'];
    if ($errorCode == 0) {
        // 获取返回的天气相关信息,具体根据业务实际逻辑调整修改
        $data = $result['result'];

        // 打印当前实况天气信息
        echo "当前城市:{$data["city"]}".PHP_EOL;
        echo "当前温度:{$data["realtime"]["temperature"]}".PHP_EOL;
        echo "当前湿度:{$data["realtime"]["humidity"]}".PHP_EOL;
        echo "当前天气:{$data["realtime"]["info"]}".PHP_EOL;
        echo "当前风向:{$data["realtime"]["direct"]}".PHP_EOL;
        echo "当前风力:{$data["realtime"]["power"]}".PHP_EOL;
        echo "当前空气质量:{$data["realtime"]["aqi"]}".PHP_EOL;

    } else {
        // 请求异常
        echo "请求异常:{$errorCode}_{$result["reason"]}".PHP_EOL;
    }
} else {
    // 可能网络异常等问题,无法正常获得相应内容,业务逻辑可自行修改
    echo "请求异常".PHP_EOL;
}

/**
 * 发起网络请求函数
 * @param $url 请求的URL
 * @param bool $params 请求的参数内容
 * @param int $ispost 是否POST请求
 * @return bool|string 返回内容
 */
function juheHttpRequest($url, $params = false, $ispost = 0)
{
    $httpInfo = array();
    $ch = curl_init();

    curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36');
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 3);
    curl_setopt($ch, CURLOPT_TIMEOUT, 12);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    if ($ispost) {
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
        curl_setopt($ch, CURLOPT_URL, $url);
    } else {
        if ($params) {
            curl_setopt($ch, CURLOPT_URL, $url.'?'.$params);
        } else {
            curl_setopt($ch, CURLOPT_URL, $url);
        }
    }
    $response = curl_exec($ch);
    if ($response === FALSE) {
        // echo "cURL Error: ".curl_error($ch);
        return false;
    }
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    $httpInfo = array_merge($httpInfo, curl_getinfo($ch));
    curl_close($ch);
    return $response;
}
powered by GitbookEdit Time: 2024-06-06 18:25:41