键和值

Azure 应用配置将配置数据存储为键值。 键值是开发人员使用的应用程序设置的简单灵活的表示形式。

钥匙

密钥充当键值的标识符,用于存储和检索相应的值。 使用字符分隔符(如 /:)将键组织到分层命名空间中是一种常见做法。 使用最适合应用程序的约定。 应用配置将密钥视为整体。 它不解析键来判断名称的结构,也不对其施加任何规则。

下面是基于组件服务按层次结构组织的键名称的示例:

    AppName:Service1:ApiEndpoint
    AppName:Service2:ApiEndpoint

在应用程序框架内使用配置数据可以规定键值的特定命名方案。 例如,Java 的 Spring Cloud 框架定义了 Environment 资源,这些资源为 Spring 应用程序提供设置。 这些资源通过包括应用程序名称和配置文件在内的变量进行了参数化。 Spring Cloud 相关配置数据的键通常以这两个元素开头,由一个分隔符分开。

存储在应用配置中的密钥是区分大小写的、基于 unicode 的字符串。 在应用配置存储区中,密钥 app1App1 是不同的。 在应用程序中使用配置设置时,请记住这一点,因为有些框架处理配置键时不区分大小写。 不建议使用大小写来区分键。

除了键名 %之外,可以使用任何 unicode 字符。 键名称不能是 ... 。 键值的总大小限制为 10 KB。 此限制包括键中的所有字符、其值以及所有关联的可选属性。 在这个限制内,您可以为键值设置许多层级。

设计密钥命名空间

命名密钥的两种常规方法用于配置数据:平面或分层。 从应用程序使用情况的角度来看,这些方法都类似,但分层命名具有以下多个好处:

  • 更易于阅读。 分层键名称中的分隔符作为句子中的空格。 它们还在单词之间提供自然的分隔。
  • 更易于管理。 键名称层次结构表示配置数据的逻辑组。
  • 更易于使用。 在分层结构中编写键模式匹配查询以仅检索部分配置数据,这样做更加简单明了。 此外,许多较新的编程框架对分层配置数据具有本机支持,以便应用程序可以使用特定的配置集。

可以通过多种方式在应用配置中分层组织密钥。 将此类键视为 URI。 每个分层键都是由分隔符联接在一起的一个或多个组件组成的资源 路径 。 根据应用程序、编程语言或框架需求选择要用作分隔符的字符。 对应用配置中的不同键使用多个分隔符。

标签键

应用配置中的键值可以选择具有“标签”属性。 标签用来区分具有相同键的键值。 在应用配置存储区中,键 app1 和标签 A 以及 B 组成了两个独立的键。 默认情况下,键值没有标签。 若要显式引用不带标签的键值,请使用 \0(编码为 %00 的 URL)。

标签提供了一种创建键变体的便捷方法。 标签的常见用途是为同一键指定多个环境:

    Key = AppName:DbEndpoint & Label = Test
    Key = AppName:DbEndpoint & Label = Staging
    Key = AppName:DbEndpoint & Label = Production

键值版本

使用标签作为创建键值多个版本的方法。 例如,可以在标签中输入应用程序版本号或 Git 提交 ID,以标识与特定软件版本关联的键值。

注释

如果要查找更改版本,应用配置会保留过去某些时间段内发生的键值的所有更改。 有关详细信息,请参阅 时间点快照

查询键值

每个键值通过其键以及可以为 \0 的标签进行唯一标识。 可以通过指定模式来查询应用程序配置存储区中的键值。 应用程序配置存储区会返回与模式匹配的所有键值,包括对应的值和属性。 在对应用配置的 REST API 调用中使用以下关键模式:

密钥 DESCRIPTION
省略 keykey=* 匹配所有密钥。
key=abc 完全匹配密钥名称 abc
key=abc* 匹配以 abc 开头的键名称。
key=abc,xyz 匹配键名称 abcxyz。 限制最多为五个CSV文件。

还可以包括以下标签模式:

标签 DESCRIPTION
省略 labellabel=* 匹配任何标签,包括 \0
label=%00 匹配 \0 标签。
label=1.0.0 完全匹配标签 1.0.0
label=1.0.* 匹配以 1.0.. 开头的标签。
label=%00,1.0.0 匹配标签 \01.0.0,限制为最多五个 CSV。

注释

*,\ 保留字符在查询中。 如果在键名称或标签中使用了保留字符,需要在查询中使用 \{Reserved Character} 来转义它。

价值观

分配给键的值也是 unicode 字符串。 您可以将所有 Unicode 字符用于参数值。

使用内容类型

应用配置中的每个键值都有一个内容类型属性。 可以选择使用此属性将有关值类型的信息存储在键值中,以帮助应用程序正确处理该值。 可以将任何格式用于内容类型。 应用配置将 媒体类型 (也称为 MIME 类型)用于内置数据类型,例如功能标志、Key Vault 引用和 JSON 键值。

后续步骤