经过7天的时间,一个用go语言开发的简单http服务接口程序,终于搞定了。本文章记录中间过程,即作为笔记,将知识点记录下来,也希望能为同样状况的CS程序开发人员提供一点经验吧。
先说功能需求,我们的ERP程序时PB开发的,客户使用第三方的微信小程序,需要与ERP对接会员信息,与他们对接肯定是走http方式的,而且ERP是主数据源,要做HTTP的服务端,实现的接口只有两个。如果开放数据库用存储过程作为接口,一个小时也许就搞定。不过数据库开放太不安全,也想通过这个实际项目来练习联系。
对方提供的技术标准文档:
- 接口规范
- 通信方式
- 接口通讯协议统一使用HTTP协议
- 字符集使用UTF-8
- 接口方法统一使用POST
- 返回格式JSON
- CRM方接口请求地址:http://xxx.xxx.xxx/xxx(由CRM方定义后提供给华阳)
- 接口参数和格式
- 响应格式
序号 | 参数 | 参考值 | 备注 |
1 | appKey | 1234567890 | 应用key(由华阳分配) |
2 | jsonData | {} | 发送的具体的数据,json格式字符串 |
3 | method | queryMember | 接口方法 |
4 | timestamp | 2012-01-20 08:50:15 | 发起请求的时间戳 |
5 | sign | 7E65B60DCFA42B043FCF57169867082C | 签名,签名算法为参数1~4按字母排序升序顺序将参数和值连起来,然后再加上商家密钥,再MD5 |
格式示例: http://xxx.xxx.com?method=queryMember&appKey=appkey&jsonData={}×tamp=2012-01-20 08:50:15&sign=7E65B60DCFA42B043FCF57169867082C
|
序号 | 标签 | 格式 | 说明 |
1 | state | 1表示成功,0其它失败 | 返回的状态 |
2 | msg | 成功 | 响应信息描述 |
3 | code | null | 预留备用 |
4 | jsonData | {} | 返回的json格式数据字符串 |
格式示例: {“state”:1, “msg”:”成功”,”jsonData”:”{}”,code:null}
|
- 时间戳验证
时间戳取系统当前时间,超过2分钟的消息为无效请求。
- 签名验证
接收请求方进行签名认证,算法为请求参数按字母排序升序将参数和值连起来,然后再加上密钥,最后再MD5加密。
例如:
method=queryMember,
appkey=1234567890,
timestamp=2012-01-20 08:50:15,
jsonData={},
即签名算法:
md5(appkey1234567890jsonData{}methodqueryMembertimestamp2012-01-20 08:50:15)。
再说一下选择GO的原因,最看重部署方便,给客户发送一个压缩包,解压,启动exe就完事。不像.NET需要安装IIS,配置各种各样的属性,而Java是一点不懂。再一点,GO是新语言,掌握它,增加一项技能,对以后工作也有好处。
4月3号,开始动手做这个项目。去年学过一段时间的GO,几个月不接触,已经忘记的差不多了,很生疏了。之前看书多,动手操作少,印象不深。这也是这次写文章的原因,通过项目,将学习的东西记录下来,以防遗忘。3号一天的时间,基本是通过学习视频来重温beego。有两个视频:
1、https://tv.sohu.com/v/cGwvOTUwNzY3NC8xMDU2OTE0NDguc2h0bWw=.html,2、https://ke.qq.com/course/340643,第二个视频更专业些。第一个看完2节,第二个看完6节,掌握个大概,就上路开发了。
电脑的GO环境还在,IDE用的liteide,框架选择的beego,书籍看的《GO Web编程》电子版。GO环境的安装、配置,GO语言开发工具的下载安装,大家百度吧,具体的过程记不清了。
4月11日后记,为了使用andlabs/ui GUI库,升级了go版本,liteide不能编译了,重新配置的系统变量,下载了MinGW-W64 GCC,相当于重新配置了go的环境;GCC也可能是GUI库要求的。
liteide也需要升级新版本,否则没有代码提示。
go语言安装包,现在可以直接在中文官网下载,地址:https://golang.google.cn/
MinGW-W64 GCC编译器,下载的x86_64-posix-seh版本,地址:https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/8.1.0/threads-posix/
liteide,下载的liteidex36.windows-qt5.9.5.zip 版本,下载地址:https://sourceforge.net/projects/liteide/files/