Golang Go语言中写了一个解析环境变量的工具库,准备用在生产里。

发布于 1周前 作者 sinazl 来自 Go语言

将环境变量映射到一个 struct 上,准备去给公司代码下毒。

因为公司里项目不使用配置文件,都是通过环境变量,而 viper 的环境变量解析不是很方便,就自己写了一个。

在个人项目里面用过了,觉得挺方便的,整理了一下开源了出来。

帮忙看看能不能说服 CTO 让我下毒。

项目地址

https://github.com/XMLHexagram/emp


Golang Go语言中写了一个解析环境变量的工具库,准备用在生产里。

更多关于Golang Go语言中写了一个解析环境变量的工具库,准备用在生产里。的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html

6 回复

主要构想是定义 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工具库用于生产环境之前,有几个关键方面需要考虑以确保其稳定性和安全性:

  1. 环境变量命名规范:确保您的工具库能够正确处理各种命名规范的环境变量,包括大写、小写、下划线等。同时,要考虑到不同操作系统(如Linux、Windows、macOS)对环境变量的处理方式可能有所不同。

  2. 错误处理:在解析环境变量时,应添加完善的错误处理机制。例如,当某个必要的环境变量缺失或格式不正确时,应能返回清晰的错误信息,并允许调用者采取适当的行动。

  3. 安全性:如果环境变量中包含敏感信息(如数据库密码、API密钥等),请确保您的工具库不会将这些信息泄露到日志或错误消息中。此外,考虑使用环境变量的加密存储和解密使用,以增强安全性。

  4. 单元测试:为工具库编写全面的单元测试,以验证其在各种情况下的行为。这包括正常输入、异常输入、边界条件等。单元测试将帮助您在代码更改时快速发现潜在问题。

  5. 文档和示例:提供详细的文档和示例代码,以帮助其他开发者理解和使用您的工具库。这包括环境变量的命名规则、支持的格式、错误处理机制等。

  6. 性能:虽然解析环境变量通常不是性能瓶颈,但在将其用于生产环境之前,仍建议进行性能测试,以确保其满足您的需求。

总之,通过综合考虑上述方面,您可以提高Golang工具库在生产环境中的稳定性和安全性。

回到顶部