# Abyss **Repository Path**: loneil/Abyss ## Basic Information - **Project Name**: Abyss - **Description**: 深渊Api - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2016-01-29 - **Last Updated**: 2020-12-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #Get Started ##API调用 ###认证授权 首先确保已申请到id号和私钥key。申请的id号和key如下: ``` 'User/Create', 'param' => ['username' => 'focrs', 'password' => '***'], 'return' => '.' ] ``` 其中api为需要查询的API接口;param为提供给api接口的数据;return项可选,如果没有此配置或配置值为'.',则返回接口默认的数据集。当接口默认返回的数据格式为对象或关联数组时,如果只想返回其中某一个属性如:id,return可设置为: ``` $query = [ 'api' => 'User/Create', 'param' => ['username' => 'focrs', 'password' => '***'], 'return' => '.id' ] ``` 发送和接收数据: ``` curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(compact('query'))); $response = curl_exec($ch); curl_close($ch); $result = json_decode($response); if($result && $result->status == 1) { var_dump($result->data); // 处理返回的数据 } else { throw new Exception($response); } ``` ####多API查询 多API查询的应用场景为多任务处理或事务处理,调用后每个api均会按调用顺序返回数据(没有则返回null),查询语句构造方式如下: ``` $query = [[ 'api' => 'User/Create', 'param' => ['username' => 'focrs', 'password' => '***'], 'bind' => ['::userId' => '.id'], // 调用下一个api需要用到的参数:userId 'return' => '.id' ], [ 'api' => 'User/Status', 'param' => ['userId' => '::userId'] ], [ 'api' => 'Product/Candy' ]]; ``` 将每个API请求构造方式放到一个数组中,就变成了多API请求。多API之前可传递共享数据,上例中预绑定了一个::userId,值为第一个API返回的id属性,将其作为userId参数传递给第二个API。 ##API开发 在项目controller目录下创建一个类文件:UserController.class.php,基本代码如下: ``` Announce($token, [ 'api' => __METHOD__, 'desc' => '创建用户', 'param' => [ [Abyss::TYPE_STRING, 'username', '用户名', 'focrs', true], [Abyss::TYPE_STRING, 'password', '密码', '******', true], ], 'return' => [Abyss::TYPE_OBJECT, null, '用户信息', [ [Abyss::TYPE_INTEGER, 'userId', '用户Id', 11] ]] ]); $user = SCS::curd('User')->create([ 'username' => Abyss::Instance()->GetParam('username'), 'password' => md5(Abyss::Instance()->GetParam('password')), ]); return ['userId' => $user->id]; } ```