262 lines
12 KiB
PHP
Executable File
262 lines
12 KiB
PHP
Executable File
<?php
|
||
/* @var $this yii\web\View */
|
||
use yii\helpers\Url;
|
||
|
||
global $_GPC;
|
||
global $_FM;
|
||
$username = Yii::$app->user->identity->username;
|
||
$cert = fmFunc_cert_exist($username);
|
||
$_FM['apiCert'] = $cert ? $cert : array();
|
||
$errorCode = 0;
|
||
|
||
if($errorCode>0){
|
||
die (json_encode(array('errorcode'=>$errorCode,'msg'=>Yii::t('errorcode',$errorCode))));
|
||
}
|
||
$statusSite=[
|
||
'-1'=>'禁止',
|
||
'0'=>'只读访问',
|
||
'1'=>'正常',
|
||
];
|
||
|
||
//接口统计
|
||
$stat = fmFunc_stat_get($username);
|
||
|
||
//错误代码集合
|
||
$errorcodes = require(Yii::getAlias('@common').'/messages/zh-CN/errorcode.php');
|
||
|
||
?>
|
||
<h1>我的Api接口</h1>
|
||
|
||
<p>
|
||
<ol>
|
||
<li>
|
||
<kbd>授权域名</kbd>:
|
||
<?php foreach($_FM['apiCert']['suDomain'] as $v){ ?>
|
||
<code><?php echo $v; ?></code>;
|
||
<?php } ?>
|
||
</li>
|
||
<li>
|
||
<kbd>IP白名单</kbd>:
|
||
<?php foreach($_FM['apiCert']['suIp'] as $v){ ?>
|
||
<code><?php echo $v; ?></code>;
|
||
<?php } ?>
|
||
</li>
|
||
<li>
|
||
<kbd>接口标识</kbd>:
|
||
<code><?php echo $_FM['apiCert']['api']; ?></code>;
|
||
</li>
|
||
<li>
|
||
<kbd>授权码</kbd>:
|
||
<code><?php echo $_FM['apiCert']['code']; ?></code>;
|
||
</li>
|
||
<li>
|
||
<kbd>站点名称</kbd>:
|
||
<code><?php echo $_FM['apiCert']['siteName']; ?></code>;
|
||
</li>
|
||
<li>
|
||
<kbd>站点ID</kbd>:
|
||
<code><?php echo $_FM['apiCert']['siteId']; ?></code>;
|
||
</li>
|
||
<li>
|
||
<kbd>站点状态</kbd>:
|
||
<code><?php echo $statusSite[$_FM['apiCert']['status']]; ?></code>;
|
||
</li>
|
||
<li>
|
||
<kbd>备注</kbd>:
|
||
<code><?php echo $_FM['apiCert']['remark']; ?></code>;
|
||
</li>
|
||
</ol>
|
||
</p>
|
||
|
||
<h1>接口统计</h1>
|
||
|
||
<p>
|
||
<ol>
|
||
<li>
|
||
<kbd>存入次数</kbd>:
|
||
<code><?php echo $stat['intimes']; ?>次</code>;
|
||
</li>
|
||
<li>
|
||
<kbd>取出次数</kbd>:
|
||
<code><?php echo $stat['outtimes']; ?>次</code>;
|
||
</li>
|
||
<li>
|
||
<kbd>累计存入数据</kbd>:
|
||
<code><?php echo $stat['inbytes']; ?>字节</code>;
|
||
</li>
|
||
<li>
|
||
<kbd>累计取出数据</kbd>:
|
||
<code><?php echo $stat['outbytes']; ?>字节</code>;
|
||
</li>
|
||
</ol>
|
||
</p>
|
||
<hr>
|
||
<h1 style="text-align: center;">接口使用简易说明</h1>
|
||
<span class="form-control">注:本处主要说明本API的基础规则及一些常用的接口使用方法,更多细节可参考我们的实际使用案例(我们基于<a href="http://s.we7.cc/index.php?c=home&a=author&do=index&uid=662" target="_blank">微擎</a>开发的嗨旅行应用、小程序管理模块等。)</span>
|
||
<p>
|
||
<ol>
|
||
<li>
|
||
<kbd>接口登陆</kbd>:<br>
|
||
<code>登陆地址:</code> https://api.hiluker.com/index.php?r=oss/login&api=<?php echo $_SERVER['HTTP_HOST'];?><br>
|
||
<code>附加表单:</code> 登陆数据以附加url转码后的字符串拼接到登陆地址中
|
||
<pre>
|
||
$loginurl = https://api.hiluker.com/index.php?r=oss/login&api='.$_SERVER['HTTP_HOST'];
|
||
$post = array(
|
||
'LoginForm[username]' => 您的用户名,
|
||
'LoginForm[password]' => 您的密码,
|
||
'LoginForm[rememberMe]' => 1
|
||
);
|
||
foreach($post as $k => $v){
|
||
$loginurl .= '&'.urlencode($k).'='.urlencode($v);
|
||
}
|
||
</pre>
|
||
<code>成功返回:</code> 登陆成功后,系统会返回一个accesstoken,通过json_decode解码即可。(随后所有的接口通讯都需要附加该accesstoken,所以建议您对该值进行存储,可以减少不必要的登陆连接)<br>
|
||
<textarea class="form-control">注:(1)”api=“后面的域名请更换为您自己的服务器域名(我们会对域名及IP来路进行合法性校验,不在白名单中的连接将无法登陆);(2)如果需要刷新accesstoken,可在登陆地址后附加'&refreshToken=1'参数。(3)如果有必要,您还可以将登陆成功的cookie记录下来,以便后用。</textarea>
|
||
<br>
|
||
</li>
|
||
<li>
|
||
<kbd>接口规范</kbd>:<br>
|
||
<code>数据分类</code> 主要分为POST数据与GET数据两类,其中部分限制约定数据必须从GET数据中取得,原则上POST进来的可以是任意类型、任意大小、任意长度的数据<br>
|
||
<code>会直接被过滤掉的POST数据:</code>这些数据会在传入时即被系统会自动过滤,不作任何保存操作
|
||
<pre>['id','siteid','createtime','updatetime','update_at'];</pre>
|
||
|
||
<code>只允许GET方式的数据:</code>这些数据与您的接口权限也有关联,在接口权限中有直接设定的,以设定好的数据为主
|
||
<pre>['uniacid','platid','shopid'];</pre>
|
||
<textarea class="form-control">注:(1)uniacid:针对微擎多公众号机制系统的标识,每个uniacid代表一个独立的后台用户;其他系统也可借鉴该方式,通过绑定不同的接口账号,实现近似多用户的功能;(2)platid:平台id,通常单个接口账号不会用到,且一般情况下,该值直接在账号注册/授权之初由系统直接规定好;(3)shopid:适用于后台用户拥有多门店/多店铺的场景;未进行配置时,默认为0;</textarea>
|
||
<br>
|
||
|
||
<code>SQL排序命令辅助sql_orders:</code>传入方式为数组,键值顺序决定排列先后,每个元素本身也是一个数组,由排序字段及排序方式构成。DESC倒序,ASC升序
|
||
<pre>
|
||
$post['sql_orders']=array(
|
||
"键"=>array(排序字段=》排序方式),
|
||
"1"=>array(”displayorder“=>"desc"),
|
||
"2"=>array(”id“=>"asc"),
|
||
……
|
||
);
|
||
</pre>
|
||
<code>SQL截断命令辅助sql_limits:</code>传入方式为数组,数组内为起始位置、结束位置两个参数
|
||
<pre>
|
||
$post['sql_limits']=array(
|
||
'start' => ($pindex-1)*$psize,
|
||
'end' => $psize,
|
||
);
|
||
</pre>
|
||
<code>SQL搜索命令辅助searching:</code>传入方式为searching数组,内可包含<code>['status','deleted','keyword','filter','plat']</code>键
|
||
<pre>
|
||
$post['searching']=array(
|
||
'status' => '', //指定状态(数据是否启用)(0,1)(默认1)
|
||
'deleted' => '', //指定状态(数据是否删除)(0,1)(默认0)
|
||
'keyword' => '', //指定要匹配的关键词(模糊检索,用以匹配标题项)
|
||
'filter' => array(要匹配的字段=》字段值) //用于设定数据过滤条件,并行条件(AND),精确匹配;支持多组(数组集,要匹配的字段=》字段值)($col=>$val),字段值可以是文本字符串(单一值)或二维数组(一个字段多种取值的情况)
|
||
'plat' => '', //指定跨平台搜索
|
||
);
|
||
</pre>
|
||
<code>注:SQL搜索命令辅助searching内如果还传入了其他参数,将由系统统一过滤整理,用作模糊匹配的可选条件(OR)</code>
|
||
<br>
|
||
</li>
|
||
<li>
|
||
<kbd>错误代码</kbd>:(客户侧可直接将接口站返回的结果打印出来查看,以下仅列出服务侧程序正确运行情况下返回的错误及提示;其他情况可直接打印结果进行查看)<br>
|
||
<textarea class="form-control"><?php foreach($errorcodes as $k=>$v){
|
||
echo '"'.$k.'" : '.$v.";\r\n";
|
||
}
|
||
?>
|
||
</textarea>
|
||
<br>
|
||
</li>
|
||
<li>
|
||
<kbd>标准接口</kbd>:<br>
|
||
<code>数据归类:</code> 本站接口数据划分为三个层级——<code>model</code>(模型数据)=><code>instance</code>(实例数据)=><code>content</code>(内容数据)<br>
|
||
<code>存取动作:</code> 数据操作共三种——<code>get</code>(取数据列表)=><code>detail</code>(取某组数据详情)=><code>save</code>(保存数据)<br>
|
||
<code>参数约定:</code> (1) 控制器动作参数ac,<small>action的简写</small>,对应数据的层级归类,如 model或house或room。传入方式:<code>GET(仅支持GET方法)</code>; (2) 控制器动作附加细分操作参数op,<small>operation的简写</small>,对应相应数据的操作,如 index或unused或deleted或all等。传入方式:<code>GET(仅支持GET方法)</code>;
|
||
<pre>通常情况下,ac参数均只需用model或instance或content即可;部分接口模型(如realty房产模型)可能略有不同</pre>
|
||
<pre>op参数说明:'index': 取未删除、可用状态的数据;'unused': 取未删除、不可用状态的数据;'deleted':取已删除数据; 'all':取未删除数据; </pre>
|
||
<code>返回结果:</code>
|
||
<pre>
|
||
对于get类的动作,返回数组,数组结构如下(仅为参考,实际可打印结果核实)
|
||
$return['errorcode'] = $errorCode; //正常情况下为0
|
||
$return['msg'] = Yii::t('errorcode',$errorCode); //返回的消息(接口报错时会使用到)
|
||
$return['data'] = isset($record) ? $record : ''; //用户侧应获得的数据
|
||
$return['timeused'] = getMillisecond() - $START_TIME; //接口耗时
|
||
$return['total'] = isset($count) ? $count : 1;//总记录数
|
||
$return['bytes'] = strlen(json_encode($return['data']));//长度字节统计
|
||
</pre>
|
||
<pre>
|
||
对于detail类的动作,返回数组,结构如下:
|
||
$return['errorcode'] = $errorCode;
|
||
$return['msg'] = Yii::t('errorcode',$errorCode);
|
||
$return['data'] = isset($record) ? $record : '';
|
||
$return['timeused'] = getMillisecond() - $START_TIME;
|
||
$return['bytes'] = strlen(json_encode($return['data']));//长度字节统计
|
||
</pre>
|
||
<pre>
|
||
对于save类的动作,返回数组,结构如下:
|
||
$return['errorcode'] = $errorCode;
|
||
$return['msg'] = Yii::t('errorcode',$errorCode);
|
||
$return['data'] = isset($record) ? $record : '';
|
||
$return['timeused'] = getMillisecond() - $START_TIME;
|
||
$return['bytes'] = strlen(json_encode($return['data']));//长度字节统计
|
||
</pre>
|
||
<br>
|
||
</li>
|
||
<li>
|
||
<kbd>接口示范</kbd>:(以房产模型为例)<br>
|
||
<code>使用模型:</code> realty<br>
|
||
<code>所取数据:</code> 客户侧指定的房产模型的下的楼盘实例(house)列表<br>
|
||
<code>基础接口:</code> https://api.hiluker.com/index.php?r=<code>realty</code>/<code>get</code><br>
|
||
<ol>
|
||
<li>
|
||
<code>构建身份验证GET参数</code>:
|
||
<pre>
|
||
$getData = array();
|
||
$urlcondition1 = ’‘; //要附加到基础接口地址上的GET参数组
|
||
$getData['appid'] = $server['username']; //接口用户名
|
||
$getData['sceret'] = $server['code']; //接口密码
|
||
$getData['accesstoken'] = $AccessToken; //接口TOKEN
|
||
foreach($getData as $k => $v){
|
||
$urlcondition1 .= '&'. urlencode($k).'='. urlencode($v);
|
||
}
|
||
</pre>
|
||
</li>
|
||
<li>
|
||
<code>构建动作、操作等GET参数</code>:
|
||
<pre>
|
||
$getData = array();
|
||
$urlcondition2 = ’‘; //要附加到基础接口地址上的GET参数组
|
||
$getData['platid'] = '';
|
||
$getData['uniacid'] = '';
|
||
$getData['shopid'] = '';
|
||
$getData['ac'] = 'house';
|
||
$getData['op'] = 'all';
|
||
foreach($getData as $k => $v){
|
||
$urlcondition2 .= '&'. urlencode($k).'='. urlencode($v);
|
||
}
|
||
</pre>
|
||
</li>
|
||
<li>
|
||
<code>构建查询/筛选等POST参数</code>:
|
||
<pre>
|
||
$postData = array();
|
||
$postData['s_sn'] = $s_sn;
|
||
$postData['searching']['deleted'] = ''; //1或0;可选项,1为仅取用已删除数据
|
||
$postData['searching']['keyword'] = "; //可选项,关键词
|
||
$postData['searching']['status'] = ''; //1或0;可选项,1为仅取用已生效中的数据
|
||
$postData['searching']['plat'] = ''; //可选项,跨平台时使用
|
||
$postData['sql_limits'] = array(
|
||
'start' => 起始页位置,
|
||
'end' => 结束页位置,
|
||
);
|
||
//处理POST数据
|
||
foreach($postData as $k => &$v){
|
||
$v = json_encode($v); //(POST的数据各键值需是string文本类型)
|
||
}
|
||
</pre>
|
||
</li>
|
||
<li>
|
||
拼接网址,POST数据<code>发送请求</code>
|
||
</li>
|
||
</ol>
|
||
<br>
|
||
</li>
|
||
</ol>
|
||
</p>
|