Golang Go语言中写了一个解析环境变量的工具库,准备用在生产里。
将环境变量映射到一个 struct 上,准备去给公司代码下毒。
因为公司里项目不使用配置文件,都是通过环境变量,而 viper 的环境变量解析不是很方便,就自己写了一个。
在个人项目里面用过了,觉得挺方便的,整理了一下开源了出来。
帮忙看看能不能说服 CTO 让我下毒。
Golang Go语言中写了一个解析环境变量的工具库,准备用在生产里。
更多关于Golang Go语言中写了一个解析环境变量的工具库,准备用在生产里。的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
主要构想是定义 struct 并且映射环境变量到 struct 上,像是 json.Unmarshal()那样。
提供了通过 tagName 自定义 name, prefix, ignore 。
并且可以配置 allowEmpty, AutoPrefix, DirectDefualt, ParseStringToArrayAndSlice 等帮助更方便的解析
更多关于Golang Go语言中写了一个解析环境变量的工具库,准备用在生产里。的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
很牛了
viper 不香吗?
类似需求我之前用过 https://github.com/kelseyhightower/envconfig ,也挺好用的
viper 不能映射环境变量到 struct (至少我没有翻到用法)
在将您的Golang工具库用于生产环境之前,有几个关键方面需要考虑以确保其稳定性和安全性:
-
环境变量命名规范:确保您的工具库能够正确处理各种命名规范的环境变量,包括大写、小写、下划线等。同时,要考虑到不同操作系统(如Linux、Windows、macOS)对环境变量的处理方式可能有所不同。
-
错误处理:在解析环境变量时,应添加完善的错误处理机制。例如,当某个必要的环境变量缺失或格式不正确时,应能返回清晰的错误信息,并允许调用者采取适当的行动。
-
安全性:如果环境变量中包含敏感信息(如数据库密码、API密钥等),请确保您的工具库不会将这些信息泄露到日志或错误消息中。此外,考虑使用环境变量的加密存储和解密使用,以增强安全性。
-
单元测试:为工具库编写全面的单元测试,以验证其在各种情况下的行为。这包括正常输入、异常输入、边界条件等。单元测试将帮助您在代码更改时快速发现潜在问题。
-
文档和示例:提供详细的文档和示例代码,以帮助其他开发者理解和使用您的工具库。这包括环境变量的命名规则、支持的格式、错误处理机制等。
-
性能:虽然解析环境变量通常不是性能瓶颈,但在将其用于生产环境之前,仍建议进行性能测试,以确保其满足您的需求。
总之,通过综合考虑上述方面,您可以提高Golang工具库在生产环境中的稳定性和安全性。