如何在应用程序配置文件中命名可配置的 URL?

How to name configurable URLs in application config file?

假设我有一个与其他几个应用程序(微服务,如果您愿意)或系统通信的应用程序。当然,那些其他应用程序或系统的地址应该在运行时或配置文件中提供。

一些其他应用程序或系统使用 HTTP,一些是代理或其他自定义协议。现在我遇到了如何在配置文件中声明的问题。

比如REST API的应该有scheme(http/https)、host和port,其他的只需要host和port。数据库需要主机、端口和数据库路径(URL 的 jdbc: 部分之后的其余部分)。如何在配置文件中命名这些变量,以便配置它们的用户可以轻松地推断出它们是什么以及它们是否应该在开始时输入方案以及对它们的期望是什么并保持一致?有时我把自己弄糊涂了。我可以找到 URL 的各个部分的名称,但找不到其中一个的某些分组部分的名称。

示例:

api1.host = http://example.com # error, this is the first part of the URL, before the path is appended
api2.url = http://example.com/api # error, I needed the part without the /api
broker.host = 192.168.2.2 # error, the user forgot the port

如何避免这种情况并保持一致?

一个可能的解决方案,尽管很丑陋:

api1.SchemeHostPort = ...
db.HostPortPath = ...

我怀疑你找不到万无一失的方法(如果你找到了,一个更足智多谋的傻瓜就会出现)。不过,我认为您可以做一些事情来提供帮助。

  1. 正如您在问题中所建议的那样,使用 <name>.<type> = <value> 形式的配置条目,或者 <type>.<name> = <value>.
  2. 如果可能,将所有此类变量收集在一起,并在它们前面加上一个注释块,解释每个 <type>.
  3. 应该使用哪种 <value>
  4. 当获取配置变量的值时(通常在启动时),您的应用程序应该对该值执行一些验证检查,如果验证检查失败则报告错误并终止。