前言
开发使用小鹅通API的时候,以下是一些需要注意的事项:
- 了解API文档:在开始开发之前,仔细阅读小鹅通的API文档,了解可用的接口和功能。熟悉文档中的请求参数和响应格式是非常重要的。
- 身份认证:使用小鹅通API,一般需要进行身份认证,获取访问令牌(Access Token)。确保在每次请求API时,都使用有效的访问令牌进行身份认证。
- API调用频率限制:小鹅通对API调用有一定的频率限制,确保你的应用程序在调用API时不会超过限制。若超过限制,可能会导致API调用失败或被临时封禁。
- 错误处理:在使用API时,要处理可能出现的错误情况。小鹅通的API会返回特定的错误码和错误信息,确保你的应用程序能正确处理这些错误,以提供更好的用户体验。
- 数据安全:在处理用户数据时,要注意数据的安全性和隐私保护。确保使用合适的加密和安全措施来保护用户数据。
- 版本控制:小鹅通的API可能会有更新和改动,确保你的应用程序使用的是最新的API版本,并及时更新你的代码以适应可能的变化。
- 测试和监控:在开发过程中,进行充分的测试,确保API调用的正确性和稳定性。同时,设置适当的监控机制,及时发现和解决潜在的问题。
一、获取指定资源学习记录信息请求方式及url
请求方式:POST
请求头:Content-Type:application/json
接口地址:https://api.xiaoe-tech.com/xe.user.leaning_record_by_resource.get/1.0.0
频率限制:10秒3000次
备注:数据是准实时的,4~5分钟延迟
二、获取指定资源学习记录信息请求参数
请求参数
请求格式
{ "access_token" : "xxxxxxxx", "resource_id" : "xxxxxx", "data" : { "search_max_learn_progress" : 90, "list" : [ "xxxx" ] }, "page": 1, "page_size": 10 }
三、单人单学习记录API封装函数
/*获取指定资源学习记录信息 * 频率限制:10秒3000次 * 备注:数据是准实时的,4~5分钟延迟 * resource_id,是,资源id; * list,是,user_id数组,上限100, 如果传空数组,则代表所有用户; * data.search_max_learn_progress,最小完成百分比,添加后会筛选出来max_learn_progress > {指定值}的学习记录,值:0-100 * data.stay_time,否,该资源的看课学习时长,添加后会筛选出来stay_time >= {指定值}的学习记录 * By WoodCutter 2023-05-25 * 返回参数 * learn_progress,最近一次学习进度 0-100; * is_finish,是否已学完 1-已学完; * stay_time,学习时长,单位秒; */ function getUserLearnRecord($resource_id, $user_list) { require_once './libs/Client.php'; $client = new Client(); $url = "https://api.xiaoe-tech.com/xe.user.leaning_record_by_resource.get/1.0.0"; $method = "post"; $data = array("search_max_learn_progress" => 0, "stay_time" => 0, "list" => $user_list); $params = ["resource_id" => $resource_id, 'data' => $data]; $result = $client->request($method, $url, $params); return json_encode($result); }
四、单人多学习记录API封装函数
将资源ID,组成数组格式:
$resource_list = ['l_6498027fe4b0cf39e6dc560b','l_64980f01e4b0f2aa7dfca5aa', 'l_64980fc3e4b0cf39e6dc5e90', 'l_64981fb6e4b0b0bc2bf7b35e'];
遍历$resource_list每次的单人单学习记录API封装函数,然后将stay_time进行累计。
举例如下:
获取的小鹅通学习记录数据(模拟数据)
$data = [ ['code' => 0, 'data' => ['list' => ['stay_time' => 7]]], ['code' => 1, 'data' => ['list' => ['stay_time' => 8]]], ['code' => 0, 'data' => []], ['code' => 0, 'data' => ['list' => ['stay_time' => 9]]], ];
计算如下:
- ‘code’ => 0,代表正常返回,不返回不计算;
- ‘data’ => [],代表能返回数据,不返回数据不计算;
$v['code'] == 0 && !empty($v['data'])
,即保证返回数据格式。
$total_time = 0; foreach ($data as $k => $v) { //var_dump($v['code']); if ($v['code'] == 0 && !empty($v['data'])) { $stay_time = $v['data']['list']['stay_time']; //echo $stay_time . "<br>"; $total_time += $stay_time; } }
总结
在小鹅通API对接的过程中,token是否超限超时过期、API接口是否超限都有特定的返回码,凭据返回码来确定下步的操作如何安排:是否入库,是否跳转页面,不能直接使用cpde=0正常码来直接进行操作。同时,尽量把小鹅通和本地代码的交互生成日志,便于快速查询问题。
@漏刻有时