《用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》
2. 英语
(1) Etymology Dictionary:https://www.etymonline.com
(2) Cambridge Dictionary:https://dictionary.cambridge.org
欢迎搜索及关注:编程人(a_codists)