第一篇文章把GIN已经安装了,而且也测试能够启动了,现在可以进行下一步啦。
根据单一职责原则,咱们来拆分路由和控制器,路由单独封装在一个(或者多个)文件里
1、创建控制器 app/controller/user user.go
package user
import "github.com/gin-gonic/gin"
func Text(c *gin.Context) {
c.JSON(200, gin.H{
"message": "测试~",
})
}
2、 创建 route 目录, 在该目录下创建 route.go
package route
import (
"github.com/gin-gonic/gin"
. "new_gin/app/controller/user" // 引入本地的user包
)
func Route() {
route := gin.Default()
route.GET("/ping", Text) // 调用user中的Text函数
route.Run() // listen and serve on 0.0.0.0:8080
}
3、修改main.go
package main
import (
. "new_gin/route" // 引入本地的 route 包
)
func main() {
Route() // 调用路由
}
4、启动服务
这样就拆分成功啦!
接下来咱们来试着读取配置文件
https://juejin.cn/post/6844904051369312264https://juejin.cn/post/68449040513693122641、开始安装
go get github.com/spf13/viper
2、加载到本地目录
go mod vendor
3、新建env.toml
app_name = "自定义名称" # possible values: DEBUG, INFO, WARNING, ERROR, FATAL log_level = "DEBUG" [mysql] hostname = "你的ip地址" port = 3306 username = "你的用户名" database = "你的库名" password = "密码" [redis] ip = "127.0.0.1" port = 6379
4、调试代码 ,把刚才Text里的代码修改一下
func Text(c *gin.Context) {
viper.SetConfigName("env") // 文件名
viper.SetConfigType("toml") // 文件类型
viper.AddConfigPath(".") // 路径
err := viper.ReadInConfig()
if err != nil {
log.Fatal("read config failed: %v", err)
}
var config = make(map[string]interface{})
config["app_name"] = viper.Get("app_name")
config["mysql hostname"] = viper.Get("mysql.hostname")
config["mysql port"] = viper.Get("mysql.port")
config["mysql username"] = viper.Get("mysql.username")
config["mysql password"] = viper.Get("mysql.password")
config["mysql database"] = viper.Get("mysql.database")
c.JSON(200, gin.H{
"message": config,
})
}
5、跑起来没问题就完成了!



