Golang & go mod 简介
目标:
- 初步使用 go mod 进行 modules 包管理
- go 版本 & gvm
- go mod
init tidy
go.mod go.sum
//indirect ?
- 了解 gin,简单 demo
/ping => pong
Gin
Gin:Golang 的一个微框架,性能极佳。
$ go get -u github.com/gin-gonic/gin
demo
package main
import "github.com/gin-gonic/gin"
func main() {
r := gin.Default()
r.GET("/ping", func(c *gin.Context) {
c.JSON(200, gin.H{
"message": "pong",
})
})
r.Run() // listen and serve on 0.0.0.0:8080
}
项目分层 & 配置管理
首先,在一个初始项目开始前,大家都要思考一下
- 程序的文本配置写在代码中,好吗?
- API 的错误码硬编码在程序中,合适吗?
- db 句柄谁都去
Open
,没有统一管理,好吗?- 获取分页等公共参数,谁都自己写一套逻辑,好吗?
显然在较正规的项目中,这些问题的答案都是不可以,为了解决这些问题,我们挑选一款读写配置文件的库,目前比较火的有 viper,有兴趣你未来可以简单了解一下,没兴趣的话等以后接触到再说。
分层 & 项目包调用
$ mkdir conf # 配置
$ mkdir models # 建模
$ mkdir routers # 路由
$ mkdir utils # 公共
package routers
import (
"github.com/gin-gonic/gin"
)
// InitRouter initialize routing information
func InitRouter() {
r := gin.Default()
r.GET("/ping", func(c *gin.Context) {
c.JSON(200, gin.H{
"message": "pong",
})
})
r.Run("0.0.0.0:7375")
}
package main
import (
"ux/routers"
)
func main() {
routers.InitRouter()
}
配置管理
程序配置写在代码中,好吗?会产生哪些问题?
程序环境如何管理?通常会有哪些环境?开发、测试、预发、线上 …
哪些需要写入配置?应用数据、数据库信息、外部调用地址 …
目标:
- 了解配置管理,使用 viper 获取配置文件及其值
- 全局调用配置
viper 配置&读取
【转】golang常用库:配置文件解析库/管理工具-viper使用
全局调用配置项
- 提取 ymPath 为传参
- main.go 控制环境(后期可增加 CLI)
- routers.go 调用 conf
models 建模 & 表结构导入
$ go get -u github.com/jinzhu/gorm
连接 MySQL 数据库
open mysql error(Error 1045: Access denied for user ‘root’@‘localhost’ (using password: YES))
提升效率 —— air
API 路由注册 & 版本管理
- 完成TODO 标签的接口定义和编写