《用Gin框架構建分散式應用》學習第4天,p32-p76總結,總計25頁。
一、技術總結
1.Go知識點
(1)iouti
書上使用ioutil包讀取JSON檔案,但是從go 1.16 開始,不再推薦使用ioutil,應該使用os 包。
(2)json.Unmarshal() vs json.NewDecoder()
當資料已經被載入到記憶體中了(例如一個string,slice),那麼使用json.Unmarshal();如果是讀取檔案,那麼使用json.NewDecoder。
2.go-swagger
使用 go-swagger包生成API文件流程:
(1)安裝
go install github.com/go-swagger/go-swagger/cmd/swagger@latest
(2)給函式新增swagger
/ swagger:route GET /recipes listRecipes
// Returns list of recipes
// ---
// produces:
// - application/json
// responses:
// '200':
// description: Successful operation
// ListRecipesHandler 差下recipes,因為是查詢所有,所以名稱這裡用的是複數
func ListRecipesHandler(c *gin.Context) {
c.JSON(http.StatusOK, recipes)
}
(3)生成文件
swagger generate spec -o ./swagger.json
注:每次給函式新增註釋後都需要執行該命令,否則API文件不會更新。
(4)啟動API服務
swagger serve --no-open -F swager ./swagger.json
注:因為本人使用的是WSL,所以需要新增--no-open,否則報webbrowser: can't open browser錯誤,服務無法啟動。
UI有兩種風格:Redoc和 Swagger UI。上沒“-F swagger”指定了UI風格為Swagger UI。
注:個人覺得書上這種方式比較麻煩且繁瑣,同時大量的註釋導致程式碼非常不簡潔。
二、英語總結
無,第二章除了食物名,整體來說生詞比較少。
三、其它
無。
四、參考資料
1. 程式設計
(1) Mohamed Labouardy,《Building Distributed Applications in Gin》:https://book.douban.com/subject/35610349
2. 英語
(1) Etymology Dictionary:https://www.etymonline.com
(2) Cambridge Dictionary:https://dictionary.cambridge.org
歡迎搜尋及關注:程式設計人(a_codists)