dimasahmad/dapodik-sdk

此包已被废弃且不再维护。未建议替代包。

非官方Dapodik SDK

v0.1.0-alpha 2020-04-06 05:29 UTC

This package is auto-updated.

Last update: 2021-12-30 03:11:19 UTC


README

⚰️ 已弃用 此项目已停止开发,未来将不再获得任何支持或更新。

非官方 Dapodik SDK,用于访问Dapodik应用中的可用API。

开发者可以通过HTTP客户端和JSON直接访问Dapodik API。如果您想直接访问Dapodik API数据,此SDK为您提供了一些便利

  • 更少的代码:您无需处理HTTP逻辑即可开始
  • SDK提供了一系列对象,您可以使用它们来访问数据,而无需直接处理JSON,并且具有更可预测和一致的命名
  • 额外的错误处理层,更严格的数据类型,以及智能的默认值以帮助您调试应用程序

所有模型都是基于对一所公立学校数据的手动分析创建的。(希望Dapodik应用程序的开发者能够发布文档甚至OpenAPI或其他API元数据标准,以便开发人员更容易访问API,以及所有模型都可以自动生成。)

SDK中提供了两个可用的端点

  1. WebService https://:5774/WebService/
  2. REST https://:5774/rest/(仅提供身份验证,模型尚未创建)

仍然处于扩展开发阶段,将在后续版本中引入重大更改

安装

可以使用Composer安装此库

composer require dimasahmad/dapodik-sdk

要运行此库,必须安装PHP >=7.4。目前没有计划支持旧版本。

开始

WebService端点

在您能够访问WebService端点之前,您必须通过您学校的Dapodik应用中的设置 -> WebService页面注册您的应用程序。请确保设置IP与将要连接到Dapodik服务器的计算机的IP相匹配。

$dapodik = new \DimasAhmad\Dapodik\SDK\Auth\WebService();
$dapodik->setAccessToken("accessToken"); // Token yang didapatkan saat registrasi aplikasi
$dapodik->setNpsn("12345678"); // NPSN server Dapodik yang akan diakses

$sekolah = new \DimasAhmad\Dapodik\SDK\Model\WebService\Sekolah($dapodik);

echo $sekolah->getNama();

REST端点

使用操作员账户作为身份验证参数。

$dapodik = new \DimasAhmad\Dapodik\SDK\Auth\Rest();
$dapodik->setUsername("user@example.com");
$dapodik->setPassword("password");

$dapodik->login();

REST端点的模型实现仍在开发中(手动分析耗时且费力 😩)。

您可以使用通过Rest->client->request($method, $uri)提供的可用方法进行请求,并自行处理从库中获得的JSON响应。

$response = $dapodik->client->request("GET", "/rest/Sekolah");
$sekolah = json_decode($response->getBody()->__toString())->rows[0];

echo $sekolah->nama;

开发

调试

您可以使用Fiddler或Charles Proxy等代理库进行调试,以查看当它们通过网络时请求和响应。在Auth对象上使用setProxyPort,如下所示

$dapodik->setProxyPort("localhost:8888");

然后打开您的客户端 代理,以查看使用此库发送的请求和响应。

Screenshot of Fiddler /WebService/getPesertaDidik

当这个库没有达到您的预期结果时,这将非常有帮助,以确定API或SDK是否存在bug。因此,当您尝试提交问题进行故障排除时,可能会被要求提供这些信息。

测试

单元测试尚未实施,但将在下一个开发里程碑中成为高优先级任务。

除了单元测试之外,还将进行功能测试

文档

待办事项

  • WebService端点 (/WebService)
    • 使用bearer token进行身份验证
    • 将每个property映射到模型
      • /getSekolah
      • /getGtk
      • /getPesertaDidik
      • /getPengguna
      • /getRombonganBelajar
  • Rest端点 (/rest)
    • 使用表单登录和cookies进行身份验证
    • 为每个API call映射模型
  • 为数据参考(例如:性别、宗教、学校状态、科目等)提供枚举模型,以便应用程序知道一个property上可用的数据值集合
  • 为每个可用方法提供文档
  • 单元测试
  • 功能测试
  • 持续集成
  • 实现proxy以简化使用HTTP调试应用程序(如Fiddler或Charles Proxy)进行debug requestresponse

贡献

我接受对该库的贡献。请查阅CONTRIBUTING.md以了解在开始贡献之前的准备工作。

许可证

版权(c)2020 Dimas Ahmad Eka Putra。版权所有。

本库使用MIT许可证。有关更多详细信息,请参阅LICENCE文件。