gin 文档
初始化gin项目
- 设置 go mod
GOPROXY=https://goproxy.cn,direct
- go mod init projectName
- 配置 go build
- 安装 gin
go get -u ginhub.com/gin-gonic/gin
#-u 如果存在则更新 - gin目录框架
├─api--前后端分离├─config--管理网站配置参数├─middleware--中间件├─model--管理数据库├─routes--路由├─utils--公共工具,全局使用├─web--前端页面├─main.go复制代码
- 分析业务功能,创建数据库
配置文件的使用
- 我们使用 .ini 来作为网站的配置文件
- 文档地址:ini.unknwon.io/docs/intro
- 项目中安装包:
go get gopkg.in/ini.v1
- 项目根目录新建 config/config.ini
ini 的使用分为:分区、键和值
config/config.ini
[server] AppMode = debug HttpPort = :3000 [database] Db = mysql Dbhost = localhost DbUser = DbPassWord = DbName = ginVue3blog 复制代码
- utils 中读取配置文件数据
- 声明配置文件中的全局变量
- 全局变量读取赋值
- 安装包:
go get -u gopkg.in/ini.v1
详情参考 文档地址:ini.unknwon.io/docs/intro
utils/setting
package utils import ( "fmt" "gopkg.in/ini.v1" ) var ( AppMode string HttpPort string Db string DbHost string DbPort string DbUser string DbPassWord string DbName string ) func init() { cfg, err := ini.Load("../config/config.ini") if err != nil { fmt.Printf("Fail to read file: %v", err) } AppMode = cfg.Section("server").Key("AppMode").MustString("debug") HttpPort = cfg.Section("server").Key("HttpPort").MustString("debug") Db = cfg.Section("database").Key("Db").MustString("mysql") DbHost = cfg.Section("database").Key("DbHost").MustString("localhost") DbPort = cfg.Section("database").Key("Db Port").MustString("3306") DbUser = cfg.Section("database").Key("DbUser").MustString("root") DbPassWord = cfg.Section("database").Key("DbPassWord").MustString("wucs123") DbName = cfg.Section("database").Key("DbName").MustString("ginVue3blog") } 复制代码
- 路由 routes/router
package routes import ( setting "ginVue3blog/utils" "github.com/gin-gonic/gin" "net/http" ) func InitRouter() { gin.SetMode(setting.AppMode) r := gin.Default() router := r.Group("api/v1") { router.GET("hello", func(c *gin.Context) { c.JSON(http.StatusOK, gin.H{ "msg": "ok", }) }) } //此函数可以返回一个引擎 *gin.Engine ,然后main函数调用运行 //也可以不返回,直接run运行 r.Run(setting.HttpPort) } 复制代码
- 运行测试 main.go
package main import "ginVue3blog/routes" func main() { //引入路由 routes.InitRouter() }