經過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語言開發工具的下載安裝,大家百度吧,具體的過程記不清了。