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/

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
服务端(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长连结客户端发通知消息,客户端收到通知后可即时做出相应操作,例如:酒店系统,前台开房后,全系统房态即时刷新,门诊系统患者前台挂号后,医生端即时就看的到,等等,比客户端轮询来的效果好。
Go语言的流行开发IDE 当今新兴语言中最实用的当数 lua 和 go 语言。lua 在游戏界可 谓是大红大紫,而 golang 在服务器也是隐隐有了霸主地位。我曾经在一个 golang 群中听说他们组(游戏行业)年终奖上千万 ... 在游戏业这样变化异常多端的行业里,用传统 C++ 来开发后台确实是跟不上时代的脚步了。用 golang 和 Erlang 开发游戏后端几乎是当今的必然选择。这和游戏前端用 lua 和 C# 如此流行的原因基本上是一样的 -- 那就是开发效率。 当然了开发语言之争永远没有结果,也不是我们今天要讨论的。我们今天要说的是 go 语言的开发工具 LiteIDE。golang 的开发工具还是比较多的,不过比较下来我个人推荐微软的 vscode 和这款开源的 LiteIDE 。要说功能 vscode 强一些,特别是调试。但 vscode 的配置是比较繁琐的,前段公司有紧急任务时,我直接下载了 liteide 一小时内完成了任务,这用 vscode 是不可想象的。至于很多人觉得 liteide 是玩具级别的,我个人不敢苟同。当然早期的时间里我确实也是这样想的。不过在几个新环境接了好几个比较紧的任务后,我不得不从 vscode 转向 liteide,坦率地说,默认安装后的 liteide 确实不太好用,下面我简单介绍一下我顺手的 liteide 的打造方法。 去掉自动代码格式化 golang 和 python 一样有个让很多人特别是老手们很不爽的特点:那就是对代码的格式要求非常严格。我个人虽然很喜欢 go 语言,不过也不得不承认确实略有变态 ... 因为对于我们这些"自以为是"的"老手"来说,折行都要规定实在太过份了,有时候折行也是我们表达编程思想的一部分好不好 ... 但不管怎样代码的格式化就是 golang 的思想的一部分,这种思想也很无奈的体现到它的开发工具中,象 vscode 和 liteide 默认情况下都会自动修改你的代码的格式,即使你的代码已经正确地编译无误了。这种情况真的很让人无奈。所以我安装上 golang 工具后的第一件事就是要禁掉代码自动格式化,而 liteide 的这个选项还不太好找:在菜单"查看"->"选项" 中弹出设置窗口后,再选择 "GolangFmt",取消提 "文件保存时..." 那个选项就可以了,如图: 取消代码自动格式化 估计你会问,为啥不取个清楚点的中文选项,叫"GolangFmt"谁知道是什么意思啊 ... 这是因为"GolangFmt"这个东西是一个插件,不好翻译为中文名称。幸好其他的 golang ide 也基本上是用的这个插件,所以记住它的英文名也有好处:那就是以后用其他 ide 了也方便找到这个功能。 2.换上 vscode 一样的编辑器配色 要说默认的 liteide 象玩具,它的编辑器配色得负上大部分的责任:配色真的太老土了,就象那个不入流的 dev c++ 风格。好吧,其实它可以配置得象摩登的 vscode 一样,不过给它的编辑器配色是真辛苦,原因是它不能在 gui 在修改,要打开配置的 xml 文件,改一个看一个效果,然后再改下一个 ... 这个文件还不好早,这里我选择大家,在它的安装目录 "liteide\share\liteide\liteeditor\color" 中,每个文件对应一个配色方案。可以复制后修改一个自己喜欢的。我用的内容给大家介绍一下: <?xml version="1.0" encoding="UTF-8"?> <style-scheme version="1.0" name="Vim (dark)"> <!-- Based on the default vim theme for a dark background, Linux console colors. --> <style name="Text" foreground="#bbbbbb" background="#000000"/> <style name="Extra" foreground="#5a5a5a" background="#000000"/> <style name="Selection" background="#666666"/> <style name="CurrentLine" background="#212121"/> <style name="IndentLine" foreground="#000000"/> <style name="VisualWhitespace" foreground="#c0c

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值