51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

Golang加载yaml类型配置文件

通常我们在使用数据库或者其他配置的时候都会有很多敏感信息,如果直接写在代码里会造成信息泄露,而且如果数据库的信息或者其他配置发生变动时,维护起来也很不方便。所以通常情况下使用配置文件的方式。

项目根目录创建config.yml配置文件 {#%E9%A1%B9%E7%9B%AE%E6%A0%B9%E7%9B%AE%E5%BD%95%E5%88%9B%E5%BB%BAconfig.yml%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6}

wechatHttp:
  #  请求api的验证
  token: 123
  port: 8000
  model: debug
#  model: release

iHttp:


post地址
======



url: http://127.0.0.1:8090
authorization: 6r9PEIHcLQoLSn6B512iAiN4fWf4XK36


机器人ID
=====



robotWxId: wxid_x7t4


主人ID
====


`masterWxId: wxid_wv
redis:
host: localhost
port: 6379
pwd: 123456
db: 0
`

创建config.go读取yml配置 {#%E5%88%9B%E5%BB%BAconfig.go%E8%AF%BB%E5%8F%96yml%E9%85%8D%E7%BD%AE}

package config

import (
"fmt"
"github.com/spf13/viper"
"os"
)


// Config 保存程序的所有配置信息
var Config = new(AppConfig)


type AppConfig struct {
\*WechatHttp `yaml:"wechatHttp"`
\*IHttp      `yaml:"iHttp"`
\*Redis      `yaml:"redis"`
}
type WechatHttp struct {
Token string `yaml:"token"`
Port  string `yaml:"port"`
Model string `yaml:"model"`
}


type IHttp struct {
URL           string `yaml:"url"`
RobotWxId     string `yaml:"robotWxId"`
MasterWxId    string `yaml:"masterWxId"`
Authorization string `yaml:"authorization"`
}


type Redis struct {
Host string `yaml:"host"`
Port string `yaml:"port"`
Pwd  string `yaml:"pwd"`
Db   int    `yaml:"db"`
}


func InitConf() {
//获取项目的执行路径
path, err := os.Getwd()
if err != nil {
panic(err)
}
config := viper.New()
config.AddConfigPath(path)     //设置读取的文件路径
config.SetConfigName("config") //设置读取的文件名
config.SetConfigType("yml")    //设置文件的类型
err = config.ReadInConfig()
if err != nil {
// 处理读取配置文件的错误
fmt.Printf("viper.ReadInConfig() failed, err:%v\\n", err)
return
}


    // 配置信息绑定到结构体变量
    err = config.Unmarshal(Config)
    if err != nil {
    	fmt.Printf("viper.Unmarshal() failed, err:%v\n", err)
    }



`}
`

在main函数中初始化读取配置 {#%E5%9C%A8main%E5%87%BD%E6%95%B0%E4%B8%AD%E5%88%9D%E5%A7%8B%E5%8C%96%E8%AF%BB%E5%8F%96%E9%85%8D%E7%BD%AE}

config.InitConf()

package main

import (
"wechat-http/config"
"wechat-http/cron"
"wechat-http/route"
"wechat-http/util"
"wechat-http/util/redis"
)


func main() {


    config.InitConf()
    redis.InitRedis()
    cron.InitMyCron()
    util.InitServerInfo()

    r := route.Setup()
    r.Run(":" + config.Config.WechatHttp.Port)




}


赞(1)
未经允许不得转载:工具盒子 » Golang加载yaml类型配置文件