我有一个非常复杂的系统,它使用多种语言和框架(Java Python Scala Bash)。在每个模块中,我需要检索相似且经常更改的配置值。目前,我正在维护多个conf文件,其中包含许多重复项。 我想知道是否有现成的RestAPI可以按需从远程位置检索变量。
我现在设法找到的所有方法都可以从远程源加载整个文件,这是我的一半解决方案:
YAML.parse(open('https://link_to_file/file.yaml'))
我的目标是直接打电话。但我找不到目标。
MyRemoteAPI.get("level1.level2.x")
P.S 对于我来说,YAML不是强制性解决方案,我愿意征求建议。
答案 0 :(得分:1)
我不了解现成的API,但是构建起来相当琐碎。提供一个将读取YAML文件并遍历到适当密钥的服务。例如使用像Ruby(+ Rails)这样的动态语言,您可以做类似
的事情def value
config = YAML.load_file '/local/path/to/config.yaml'
render plain: config.dig(params[:key].split('.'))
end
dig
本质上遍历一个结构,如果未找到键,则安全地返回nil,因此这将返回所请求路径的“叶子”处的值。
您可能还希望将结构缓存在内存中,以防止不断读取文件,例如可以做类似@@config ||= YAML.parse(open('https://link_to_file/file.yaml'))
或config = Rails.cache.fetch('config', expire_in: 1.hour) { ... }
的事情。和/或缓存API的HTTP响应。