
Theo Nguyên tắc số 3 của The Twelve-Factor App thì cấu hình cần phần tách biệt khỏi source code.
Thông thường cấu hình sẽ được lưu ở biến môi trường hoặc một dịch vụ bên ngoài như AWS Secrets Manager.
Trong Golang, để đọc biến môi trường ta có thể sử dụng code bên dưới
// set biến môi trường
os.Setenv(key, value)
// get biến môi trường
value := os.Getenv(key)
Để đọc biến môi trường được cấu hình từ file (ví dụ như .env
) thì ta có thể sử dụng package godotenv
godotenv
go get github.com/joho/godotenv
godotenv
cung cấp phương thức Load
để đọc file env
// mặc định đọc file .env ở trong thư mục hiện tại
godotenv.Load()
// hoặc chỉ định file
godotenv.Load("/path/to/file/env")
File env hỗ trợ format yaml
, tham khảo tài liệu ở đây
viper
Ngoài godotenv
thì viper
là package phổ biến nhất hỗ trợ các format như JSON, TOML, YAML, HCL, envfile và cả Java properties config file.
go get github.com/spf13/viper
// cấu hình đường dẫn file env
viper.SetConfigFile(".env")
// đọc cấu hình
viper.ReadInConfig()
// đọc giá trị
viper.Get(key)
// xác nhận kiểu dữ liệu
value, ok := viper.Get(key).(string)
// nếu kiểu dữ liệu của `key` là string thì ok trả về true