[Web] go 管理構成アーティファクト viper ライブラリ

公式ドキュメントを読むことをお勧めします

バイパーライブラリの役割

viper は、Go アプリケーションで複数の形式 (YAML、JSON、TOML など) の設定ファイルを処理するのに適しています

  • デフォルトを設定する
  • JSON、TOML、YAML、HCL、envfile、および Java プロパティ構成ファイルからの読み取り
  • 構成ファイルをリアルタイムで監視および再読み取り (オプション)
  • 環境変数から読み取る
  • リモート構成システム (etcd または Consul) から読み取り、変更を監視します。
  • コマンドラインフラグから読み取る
  • バッファから読み取る
  • 明示的な値を設定する

Viper は、アプリケーション構成のすべてのニーズに対応するレジストリと考えることができます。

使用

  1. インストール
go get github.com/spf13/viper
  1. YAML 形式という名前の構成ファイルを作成しますconfig.yaml。例:
 database:
 host: localhost
 port: 5432
 user: myuser
 password: mypassword
  1. main関数を書く
package main  
  
import (  
"fmt"  
"github.com/spf13/viper"  
)  
  
func main() {
    
      
viper.SetConfigFile("config.yaml") // 设置配置文件名  
viper.SetConfigType("yaml") // 设置配置文件类型  
viper.AddConfigPath(".") // 设置配置文件路径  
  
err := viper.ReadInConfig() // 读取配置文件  
if err != nil {
    
      
panic(fmt.Errorf("读取配置文件失败: %s \n", err))  
}  
  
dbHost := viper.GetString("database.host") // 读取数据库主机名  
dbPort := viper.GetInt("database.port") // 读取数据库端口号  
dbUser := viper.GetString("database.user") // 读取数据库用户名  
dbPassword := viper.GetString("database.password") // 读取数据库密码  
  
fmt.Printf("%v %v %v %v ", dbHost, dbPort, dbUser, dbPassword) 
// 使用配置信息连接数据库...  
}
  1. 全体的な構成は次のとおりです
├─go.mod
├─config
└─main.go

バイパーにはいくつかの重要な機能もあります

  1. viper.SetDefault(key string, value interface{}):デフォルト値を設定します。構成ファイルの読み取り時にキーと値のペアが見つからない場合は、デフォルト値が使用されます。
viper.SetDefault("database.host", "localhost")
viper.SetDefault("database.port", 5432)
  1. viper.GetString(key string) string: 文字列型の構成パラメータの値を取得します。
dbHost := viper.GetString("database.host")
  1. viper.GetInt(key string) int: 整数型の構成パラメータの値を取得します。
dbPort := viper.GetInt("database.port")
  1. viper.GetBool(key string) bool: ブール型の構成パラメータの値を取得します。
debugMode := viper.GetBool("debug")
  1. viper.GetDuration(key string) time.Duration: 期間タイプの構成パラメータの値を取得します。
timeout := viper.GetDuration("timeout")
  1. viper.GetStringSlice(key string) []string: 文字列スライス タイプの構成パラメータの値を取得します。
allowedIPs := viper.GetStringSlice("security.allowed_ips")
  1. viper.Set(key string, value interface{}): 設定パラメータの値を設定します。

viper.Set("database.host", "db.example.com")
  1. viper.WatchConfig(): 構成ファイルへの変更を監視し、構成ファイルをリロードします。
viper.WatchConfig()
  1. viper.ReadInConfig(): 指定された構成ファイルを読み取り、解析します。
err := viper.ReadInConfig()
if err != nil {
    
    
    fmt.Printf("读取配置文件失败: %s\n", err)
}

これらの関数は Viper で最もよく使用される関数の一部ですが、他にもviper.AllSettings()viper.IsSet()などの便利な関数がたくさんあります。viper.Unmarshal()Viper を使用すると、構成ファイルを手動で解析して処理することなく、アプリケーションの構成情報を簡単に読み取り、管理できます。

おすすめ

転載: blog.csdn.net/csxylrf/article/details/131236316