gin实例--根据环境读取配置信息

3,552 阅读1分钟

源码

github.com/zsl10/gin-e…

功能

  • 根据不同环境读取不同配置信息
  • 读取父子分区:如果某个键在子分区中不存在,则会去它的父分区中再次寻找

实例

  • conf/app.ini
[env]
value = product.dev
[product]
runMode = product
addr = :8080
[product.dev]
runMode = dev
[product.test]
runMode = test
  • main.go
package main

import (
	"github.com/gin-gonic/gin"
	"github.com/go-ini/ini"
	"github.com/spf13/pflag"
	"log"
	"net/http"
)

var env = pflag.StringP("env", "e", "", "set environment")

func main() {
	pflag.Parse()
	var env = *env

	cfg, err := ini.Load("conf/app.ini")
	if err != nil {
		log.Fatalf("Fail to parse 'conf/app.ini': %v", err)
	}
	if env == "" {
		a := cfg.Section("env")
		b, _ := a.GetKey("value")
		env = b.String()
	}
	section := cfg.Section(env)
	addr, err := section.GetKey("addr")
	runMode, err := section.GetKey("runMode") //dev、test环境可以从父分区获取
	r := gin.Default()
	r.GET("test/config", func(c *gin.Context) {
		c.JSON(http.StatusOK, gin.H{
			"addr": addr.String(),
			"mode": runMode.String(),
		})
	})
	r.Run(addr.String())
}

  • 运行:
// 1、使用命令行传参设置环境
 go run main.go --env=product.dev
// 2、读取配置文件的默认环境配置
fresh
  • 测试:
curl 127.0.0.1:8080/test/config
{"addr":":8080","mode":"dev"}