PB程序员的第一个go语言开发的http服务程序,实战经历(一)

经过7天的时间,一个用go语言开发的简单http服务接口程序,终于搞定了。本文章记录中间过程,即作为笔记,将知识点记录下来,也希望能为同样状况的CS程序开发人员提供一点经验吧。

先说功能需求,我们的ERP程序时PB开发的,客户使用第三方的微信小程序,需要与ERP对接会员信息,与他们对接肯定是走http方式的,而且ERP是主数据源,要做HTTP的服务端,实现的接口只有两个。如果开放数据库用存储过程作为接口,一个小时也许就搞定。不过数据库开放太不安全,也想通过这个实际项目来练习联系。

对方提供的技术标准文档:

  1. 接口规范
    1. 通信方式
  1. 接口通讯协议统一使用HTTP协议
  2. 字符集使用UTF-8
  3. 接口方法统一使用POST
  4. 返回格式JSON
  5. CRM方接口请求地址:http://xxx.xxx.xxx/xxx(由CRM方定义后提供给华阳)

 

 

    1. 接口参数和格式
    2. 响应格式

序号

参数

参考值

备注

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}

 

 

 

 

    1. 时间戳验证

时间戳取系统当前时间,超过2分钟的消息为无效请求。

    1. 签名验证

接收请求方进行签名认证,算法为请求参数按字母排序升序将参数和值连起来,然后再加上密钥,最后再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/

服务端(jsxserver),采用c++ + iocp + pbni + zlib编写而成,支持PB长连结(提供pb客户端demo),支持http get post调用,pbni调用pbcall里的nvo_pbnicall(服务端业务代码全由PB编写),具体请看demo客户端代码中的说明; 实现的功能:1.pb客户端调用功能,可实现类似easerver iiop的功能,比easerver多了服务端心跳,客户端自动判断是否断网,自动重连,客户端单开线程序通迅,前端界面不会卡死(用eserver不管是iiop还是ws高锋期经常未响应卡半天),传输码流比easerver小,程序总体运行效率也高一些,支持http get post调用,做接口很容易实现;2.客房端点对点发消息(由服务端发),可以实现类似在线聊天的功能,响应http post也可以通过服务端即时发给PB的客户端,PB客户端生成响应数据返回http调用端,客户如果用的局域网系统,又想做移动端的远程查询(小数据量),软件供应商有公网服务器的话,可用本框架打通实现,我们用此框架实现过医生手机远程连入门诊内部查询修改自已的预约、患者资料;3.服务端即时通知功能,pb长连结客户端、http调用,服务端处理完成后,可以给在线的pb长连结客户端发通知消息,客户端收到通知后可即时做出相应操作,例如:酒店系统,前台开房后,全系统房态即时刷新,门诊系统患者前台挂号后,医生端即时就看的到,等等,比客户端轮询来的效果好。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值