標籤:json序列化 網路 欄位名 blob 處理 參考 登入密碼 不同 操作
之前寫了兩篇golang開發入門文章,太過潦草,趕著10.1 放假的前夕,想著還是要認真對待自己寫的東西,記錄學習的點滴,以後也許會忘了現在學習的東西,但是好歹留下一些文字,同時也希望能給花時間讀我部落格的人真正有些協助。
前期準備
因為golang 之前斷斷續續學過一點,所以現在就以開發一個使用者管理這樣簡單的功能入手。如果你現在在看我的這篇文章,你需要要具備以下知識點
- 1、golang 開發環境搭建
- 2、golang 的基本文法
- 3、物件導向和mvc開發思想
搭建項目
我使用eclipse作為開發工具,項目目錄按照傳統的mvc分層思想進行構建,結構如下:
src domain -- 領域,其實就是用struct來表示一些對象 store -- 儲存層,主要操作資料庫 web -- 介面層,對外提供提供者 main.go -- 入口類
細心的朋友可能已經發現了,上面的結構少了業務層,這是因為剛開始我的使用者管理只是簡單的CRUD(增刪改查)操作,沒有複雜的邏輯,之後如果涉及更複雜的業務,會再添加業務處理層。我已經將代碼上傳到了github上,你可以點擊hiuser訪問,在項目src/v1.0.learn 目錄下可以看到本篇文章涉及的所有代碼,如果你發現了代碼有任何不合理的地方,歡迎向我提出,在此先行謝過。
需求與設計
我假設的需求情境是這樣的:現在有一個線上的檔案瀏覽系統,這個系統不會有太多的使用使用者,它的功能主要就是將伺服器本地的一個檔案目錄映射到網路上,不同的使用者登入後,都給他在目錄下分配一個子目錄,使用者在這個子目錄上可以上傳下載檔案,起到了一個簡易的網盤作用。golang實際上有一個非常不錯的開源項目已經實現了上述的需求,而且功能更加強大,它就是filebrower,本篇文章以及後續的更新,也是參考這個項目來學習的。
本章並不考慮需求中檔案相關的部分,而是單獨來看使用者,首先這個系統會有一個管理員,他至少應該具有以下功能:
- 1、他能能夠建立其他人員,並且給他指定檔案子目錄;
- 2、他能夠查詢所有人員及人員對應的目錄;
- 3、他可以修改人員對應的子目錄;
- 4、他可以刪除人員;
不管是管理員還是普通使用者,都應該可以:
根據上述的幾點需求,來設計一套restful介面,關於登入會在之後的文章中進行完善,本章實現使用者的CRUD操作。詳細的設計文檔,可以到github上查看,地址:介面文檔
開發實現
本系列使用boltdb資料庫來儲存使用者的資訊,關於boltdb的使用,我將在下一章中詳細介紹;而對於介面的實現,先不使用任何架構,直接使用golang內建的http模組。
定義使用者
在domain目錄下建立個users.go檔案,該檔案來定義使用者的詳細資料;
// 使用者實體type User struct { // 主鍵 Id int `json:"id"` Login string `json:"login"` // 使用者登入名稱 Name string `json:"name"` // 登入密碼 Password string `json:"-"` Path string `json:"path"`}
通過golang的struct(結構體)來定義使用者物件,欄位後面json:xxx標籤的目的是自訂json序列化之後如何展示,通過json:login標識後最終介面返回的欄位名稱將會是login而不是預設的Login;通過添加json:"-",介面將不會將密碼也一塊返回。
儲存層
golang 介面開發入門01- 從0開始構建項目