gin博客项目复盘--01配置文件使用

75 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第13天,点击查看活动详情

gin 文档

gin-gonic.com/zh-cn/docs/

初始化gin项目

  1. 设置 go mod GOPROXY=https://goproxy.cn,direct

  2. go mod init projectName

  3. 配置 go build

  4. 安装 gin go get -u ginhub.com/gin-gonic/gin #-u 如果存在则更新

  5. gin目录框架

   ├─api     --前后端分离
   ├─config  --管理网站配置参数
   ├─middleware  --中间件
   ├─model   -- 管理数据库
   ├─routes  -- 路由
   ├─utils  -- 公共工具,全局使用
   ├─web  -- 前端页面
   ├─main.go
  1. 分析业务功能,创建数据库

配置文件的使用

  • 我们使用 .ini 来作为网站的配置文件
  • 文档地址:ini.unknwon.io/docs/intro
  • 项目中安装包:go get gopkg.in/ini.v1
  1. 项目根目录新建 config/config.ini

ini 的使用分为:分区、键和值

config/config.ini

[server]
AppMode = debug
HttpPort = :3000

[database]
Db = mysql
Dbhost = localhost
DbUser =
DbPassWord =
DbName = ginVue3blog
  1. 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")
}
  1. 路由 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)
}
  1. 运行测试 main.go
package main

import "ginVue3blog/routes"

func main() {
	//引入路由
	routes.InitRouter()
}