代码之家  ›  专栏  ›  技术社区  ›  RefiPeretz

通过rest api读取yaml配置

  •  0
  • RefiPeretz  · 技术社区  · 7 年前

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

    到目前为止,我只找到了从远程源加载整个文件的方法,这是我的半个解决方案:

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

    我的目标是打一个直接的电话,但我没有找到线索。

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

    附笔 YAML对我来说不是强制性的解决方案,我愿意听取建议。

    1 回复  |  直到 7 年前
        1
  •  1
  •   mahemoff    7 年前

    我不知道什么是现成的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,因此这将返回请求路径的“leaf”处的值。

    您可能还希望将结构缓存在内存中,以防止不断读取文件,例如,可以执行以下操作 @@config ||= YAML.parse(open('https://link_to_file/file.yaml')) config = Rails.cache.fetch('config', expire_in: 1.hour) { ... } . 和/或缓存API的HTTP响应。

    推荐文章