通过Rest API读取YAML配置

时间:2018-07-23 08:32:43

标签: rest yaml remote-access

我有一个非常复杂的系统,它使用多种语言和框架(Java Python Scala Bash)。在每个模块中,我需要检索相似且经常更改的配置值。目前,我正在维护多个conf文件,其中包含许多重复项。 我想知道是否有现成的RestAPI可以按需从远程位置检索变量。

我现在设法找到的所有方法都可以从远程源加载整个文件,这是我的一半解决方案:

YAML.parse(open('https://link_to_file/file.yaml'))

我的目标是直接打电话。但我找不到目标。

MyRemoteAPI.get("level1.level2.x")

P.S 对于我来说,YAML不是强制性解决方案,我愿意征求建议。

1 个答案:

答案 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响应。