PHP开发api接口怎么用

  介绍

小编给大家分享一下PHP开发api接口怎么用,希望大家阅读完这篇文章之后都有所收获、下面让我们一起去探讨吧!

<强> PHP的api接口

在实际工作中,使用PHP写api接口是经常做的,PHP写好接口后,前台就可以通过链接获取接口提供的数据,而返回的数据一般分为两种情况,xml和json,在这个过程中,服务器并不知道,请求的来源是什么,有可能是别人非法调用我们的接口,获取数据,因此就要使用安全验证。

<强>验证原理
<强>示意图

<强>原理
从图中可以看得很清楚,前台想要调用接口,需要使用几个参数生成签名。

时间戳:当前时间

随机数:随机生成的随机数

口令:前后台开发时,一个双方都知道的标识,相当于暗号

算法规则:商定好的运算规则,上面三个参数可以利用算法规则生成一个签名。

前台生成一个签的名,当需要访问接口的时候,把时间戳,随机数,签名通过URL传递到后台。后台拿到时间戳,随机数后,通过一样的算法规则计算出签的名,然后和传递过来的签名进行对比,一样的话,返回数据。

<强>算法规则
在前后台交互中,算法规则是非常重要的,前后台都要通过算法规则计算出签的名,至于规则怎么制定,看你怎么高兴怎么来。

我这个算法规则是

1时间戳,随机数,口令按照首字母大小写顺序排序

2然后拼接成字符串

3进行sha1加密

4再进行MD5加密

5转换成大写。

<强>前台
这里我并没有实际的前台,直接使用一个PHP文件代替前台,然后通过卷曲模拟得到请求。我使用的是TP框架,URL格式是pathinfo格式。
<强>源代码

& lt; PHP ?/* *   ,* Created  by  PhpStorm。   ,*用户:管理员   ,*日期:2020/3/16  0016   *大敌;时间:15:56   ,*/namespace 客户端\控制器;   use 认为\控制器;   {class  ClientController  extends 控制器   ,const  TOKEN =, & # 39; api # 39;;   ,//模拟前台请求服务器api接口   ,public  function  getDataFromServer () {//时才能间戳=美元才能timeStamp 拖延时间();//才能随机数   美元才能randomStr =,美元却;能够→,createNonceStr ();//生才能成签名   美元才能signature =,美元却;能够→,算术(时间戳,randomStr美元);//url才能地址   url 美元;=,才能“http://www.apitest.com/Server/Server/respond/t/{$时间戳}/r/{$ randomStr}/s/{$签名}“;;   美元才能result =,美元却;能够→,httpGet ($ url);   转储(结果)美元才能;   ,}   ,//卷曲模拟得到请求。   ,private  function  httpGet ($ url) {   时间=美元才能curl  curl_init ();//需才能要请求的是哪个地址   curl_setopt才能($ curl CURLOPT_URL $ url);//表才能示把请求的数据已文件流的方式输出到变量中   curl_setopt才能(美元curl CURLOPT_RETURNTRANSFER 1);   时间=美元才能result  curl_exec($旋度);   curl_close才能($旋度);   return 才能;美元的结果;   ,}   ,//随机生成字符串   ,private  function  createNonceStr ($ length =, 8), {   时间=美元才能chars “abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";   时间=美元才能str “,“;   for 才能;($小姐:=,0;,美元小姐:& lt;,长度;美元,美元我+ +),{   ,,str 美元。=,substr($字符,mt_rand (0,, strlen($字符),安康;1),,1);   ,,}   return 才能“z" str美元;   ,}/* *   *,才能@param  timeStamp 美元;时间戳   *,才能@param  randomStr 美元;随机字符串   *,才能@return  string 返回签名   ,*/,private  function 算术(时间戳,randomStr美元){   美元才能arr[& # 39;时间戳# 39;],=,$时间戳;   美元才能arr [& # 39; randomStr& # 39;],=, randomStr美元;   美元才能arr[& # 39;标记# 39;],=,self::令牌;//按才能照首字母大小写顺序排序   这样才能(arr美元,SORT_STRING);//拼才能接成字符串   时间=美元才能str 内爆(arr);//才能进行加密   时间=美元才能signature  sha1 (str);   美元才能signature =, md5(签名);//转才能换成大写   时间=美元才能signature  strtoupper(签名);   return 才能;美元签名;   ,}   }

<>强服务器端

接受前台数据进行验证

<强>源代码

& lt; php ?/* *   ,* Created  by  PhpStorm。   ,*用户:管理员   ,*日期:2020/3/16  0016   *大敌;时间:16:01   ,*/namespace 服务器\控制器;   use 认为\控制器;   {class  ServerController  extends 控制器   ,const  TOKEN =, & # 39; api # 39;;   ,//响应前台的请求   ,public  function 反应(){//才能验证身份   时间=美元才能timeStamp  $ _GET [& # 39; t # 39;];   时间=美元才能randomStr  $ _GET [& # 39; " # 39;];   时间=美元才能signature  $ _GET [& # 39; & # 39;];   美元才能str =,美元却;能够→,算术(时间戳,randomStr美元);   ,,如果美元($ str  !=,签名){   ,,echo “1“;;   ,,退出;   ,,}//模才能拟数据   美元才能arr[& # 39;名字# 39;],=,& # 39;api # 39;;   美元才能arr[& # 39;年龄# 39;],=,15;   美元才能arr[& # 39;地址# 39;],=,& # 39;zz # 39;;   美元才能arr [& # 39; ip # 39;],=,“192.168.0.1";   echo 才能json_encode (arr);   ,}/* *   *,才能@param  timeStamp 美元;时间戳   *,才能@param  randomStr 美元;随机字符串   *,才能@return  string 返回签名   ,*/null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

PHP开发api接口怎么用