【问题标题】:Spring Cloud Config, how to fetch binary files from git repositorySpring Cloud Config,如何从git存储库中获取二进制文件
【发布时间】:2022-12-15 20:37:38
【问题描述】:

Spring cloud-config-server 有一个内置的机制来与 git 存储库通信并读取存储在那里的文件。然后cloud-config-server 也有内置的机制来向客户端(通常是 spring boot 应用程序)公开端点,客户端可以读取这些文件并将它们用作配置。

从下面可以看出,这在 spring 文档中有详细记录。

根据doc

Spring Cloud 配置服务器

Spring Cloud Config Server 提供了一个 HTTP 用于外部配置的基于资源的 API(名称-值对或 等效的 YAML 内容)。

也作为documented关于服务格式

提供替代格式

默认的 JSON 格式来自 环境端点非常适合 Spring 使用 应用程序,因为它直接映射到环境 抽象。如果您愿意,您可以使用与 YAML 或 通过添加后缀(“.yml”、“.yaml”或“.properties”)的 Java 属性 到资源路径。这对以下消费很有用 不关心 JSON 结构的应用程序 端点或它们提供的额外元数据(例如, 不使用 Spring 的应用程序可能会从简单性中受益 这种方法)。

可以also支持txt格式

提供纯文本

而不是使用环境抽象(或 它在 YAML 或属性中的替代表示之一 格式),您的应用程序可能需要通用的纯文本配置 适合其环境的文件。

但是考虑到 spring cloud config 服务器具有与 git 存储库通信的内置机制,并且还向客户端公开端点以使用交付的文件,其他类型的文件能够从这些端点提供服务是有意义的出色地。

它可以是例如 .pdf.xslx ,甚至是 .zip

例如,假设配置的 git 存储库在 featureA 分支中包含文件 myFile.zip。然后在/{application}/{profile}[/{label}]类型的暴露路径下调用,例如 serverUrl:serverPort/myApp/default/featureA/myFile.zip 能够传送文件,但始终以原始 .txt 文件的形式传送,这会破坏 git 中现有的原始文件的内容。

我已经找到了解决方案,但在上面投入了很多时间,奇怪的是它没有记录在 spring 文档中。因此,存在于此可能是一件好事,可以为其他有相同问题的人腾出一些时间。

【问题讨论】:

    标签: java spring git spring-boot spring-cloud-config


    【解决方案1】:

    正如在this 问题下所讨论的,spring-cloud-config-server 在普通的spring-boot 应用程序的帮助下运行。考虑到 spring-boot 内置了内容协商机制,它也能够消费和生产不同的类型。

    至于spring-cloud-config-server,如果使用标头进行调用,则可以从 git 和其他文件(例如 zip、pdf、word、xlsx ...)中获取二进制文件Accept: application/octet-stream.这样,对serverUrl:serverPort/myApp/default/featureA/myFile.zip 的调用就能够传送原始文件myFile.zip 的副本,而不会造成任何损坏。

    【讨论】:

      猜你喜欢
      • 2020-07-23
      • 2016-11-18
      • 2019-04-01
      • 2019-09-06
      • 1970-01-01
      • 2021-07-20
      • 1970-01-01
      • 2021-08-13
      • 1970-01-01
      相关资源
      最近更新 更多