引导徒弟找到用java程序拉取钉钉考勤记录的方法
一.背景
公司安排了师带徒任务,两个徒弟都满了一年了,基本具备独立上手的能力。但他们跟我当年一样,缺乏系统性思维,不知道体系化的思路。所以,借着公司安排给他们的拉取钉钉考勤记录的任务,我记录分享一下引导他们找到合适方案的过程。
二.前期情况
徒弟接到任务后,在网上各种找资料,大致了解了钉钉拉取考勤记录的流程,核心就是认证和获取考勤记录两大步。认证跟其他开放平台差不多,管理帐号要去设置,拿到类似APPID、AK、SK等信息。获取考勤记录主要就是要先获取一个token,这个token是有有效期的,一般获取后就保存起来,然后是请求地址解析结果。
徒弟利用我们前期共同搭建的基础框架,使用java语言,基于maven、gitlab、nexus、jekins、1Panle(docker、redis、mysql)等CI/CD环境,进行开发。
徒弟已经只差最后一个环节调用考勤记录解析返回结果了。我因为其他事情去审计了一下代码,发现他是通过发起HTPP连接去与钉钉开放平台交互的。结果他在解析时方向某个字段可能因为没有值就不返回,期望{"aaa":""}类似的结构,结果返回的是{}。对于他们来说,这里处理钉钉考勤记录获取接口(http url )本身,还有两个知识点:如何发起http访问和如何解析返回结果。
三.优先选用SDK
我的建议是对于开放平台,优先选择SDK。怎么找到SDK呢?
1.找到SDK的过程
百度输入“钉钉 考勤记录 SDK”,我选择看了搜索结果中的这个,因为标题跟我想要的接近,来源更想官方。
进去过后,发现确实是官方的文档,虽然并不是获取考勤记录的,但是整个文档是成体系的,有获取SDK的渠道。
发现maven依赖如下
<dependency><groupId>com.aliyun</groupId><artifactId>dingtalk</artifactId><version>{sdk-version}</version>
</dependency>
2.找到SDK的maven依赖版本的过程
{sdk-version}的具体版本号是多少呢?哪里去找呢?
百度输入“阿里 maven 仓库”:
进入阿里 maven仓库搜索的界面,先输入artifactid是"dingtalk",点击查询。结果太多,我又用浏览器的查找ctrl+f输入了groupid是“com.aliyun”在页面内查找,很快就找了groupid、artifactid与我们SDK一致的信息了。不过我们要看packing是"jar"的版本号,就是2.1.61。
四.为什么优先选择SDK?
具体编写代码,我就不写了。这里说说为啥优先选择SDK?因为SDK一般是与接口配套的,我们不用去考虑请求路径、请求结果适配这些问题,使用简单,版本更换更简单。