你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

适用于 JavaScript 的 Azure 架构注册表 Json 序列化程序客户端库 - 版本 1.0.0

Azure 架构注册表是由 Azure 事件中心托管的架构存储库服务,提供架构存储、版本控制和管理。 此包提供能够序列化和反序列化包含 Json 序列化数据的负载的 Json 序列化程序。

关键链接:

开始

先决条件

安装 @azure/schema-registry-json

使用 npm安装适用于 JavaScript 的 Azure 文本分析客户端库:

npm install @azure/schema-registry-json

关键概念

JsonSchemaSerializer

提供 API,以便通过包含架构 ID 的内容类型字段对消息中包装的 JSON 进行序列化和反序列化。 使用 @azure/schema-registry 包中的 SchemaRegistryClient 从架构定义获取架构 ID,反之亦然。 提供的 API 具有内部缓存,以避免尽可能调用架构注册表服务。

消息

默认情况下,序列化程序将创建结构化的消息,如下所示:

  • data:包含 JSON 数据的字节数组。

  • contentType:以下格式的字符串 application/json+<Schema ID>,其中 application/json 部件指示此消息具有 Json 序列化的有效负载,<Schema Id> 部分是架构注册表服务分配给用于序列化此有效负载的架构的架构 ID。

并非所有消息服务都支持相同的消息结构。 若要启用与此类服务的集成,序列化程序可以通过使用相应的消息生成者和使用者在构造函数中设置 messageAdapter 选项来处理自定义消息结构。 Azure 消息传送客户端库为其消息类型导出默认适配器。

例子

序列化和反序列化 @azure/event-hubsEventData

const { DefaultAzureCredential } = require("@azure/identity");
const { createEventDataAdapter } = require("@azure/event-hubs");
const { SchemaRegistryClient } = require("@azure/schema-registry");
const { JsonSchemaSerializer } = require("@azure/schema-registry-json");

async function main(){
  const client = new SchemaRegistryClient(
    "<fully qualified namespace>",
    new DefaultAzureCredential()
  );
  const serializer = new JsonSchemaSerializer(client, {
    groupName: "<group>",
    messageAdapter: createEventDataAdapter(),
  });

  // Example Json schema
  const schema = JSON.stringify({  
    $schema: "http://json-schema.org/draft-04/schema#",
    $id: "person",
    title: "Student",
    description: "A student in the class",
    type: "object",
    properties: {
      name: {
        type: "string",
        description: "The name of the student",
      },
    },
    required: ["name"]
  });

  // Example value that matches the Json schema above
  const value = { name: "Bob" };

  // Serialize value to a message
  const message = await serializer.serialize(value, schema);

  // Deserialize a message to value
  const deserializedValue = await serializer.deserialize(message);
}

main().catch((err) => {
  console.error("The sample encountered an error:", err);
});

序列化程序不会检查反序列化值是否与架构匹配,但提供了实现此类验证的选项。 应用程序可以将验证回调函数作为选项之一传递给可实现架构验证的反序列化方法。 若要查看验证的实现方式,请查看 schemaRegistryJsonWithValidation 示例。

故障 排除

Json 序列化程序根据需要与 架构注册表 服务进行通信,这些服务调用可能会引发 RestError。 此外,序列化或反序列化失败时,将引发类型 Error 的错误。 cause 属性将包含从 JSON 分析器引发的基础错误。

伐木

启用日志记录可能有助于发现有关故障的有用信息。 若要查看 HTTP 请求和响应的日志,请将 AZURE_LOG_LEVEL 环境变量设置为 info。 或者,可以通过在 @azure/logger中调用 setLogLevel 在运行时启用日志记录:

const { setLogLevel } = require("@azure/logger");

setLogLevel("info");

后续步骤

有关如何使用此库的详细示例,请查看 示例 目录。

贡献

此项目欢迎贡献和建议。 大多数贡献要求你同意参与者许可协议(CLA),声明你有权(实际这样做)授予我们使用你的贡献的权利。 有关详细信息,请访问 https://cla.microsoft.com

提交拉取请求时,CLA 机器人会自动确定是否需要提供 CLA 并适当修饰 PR(例如标签、注释)。 只需按照机器人提供的说明进行作。 只需使用 CLA 在所有存储库中执行此作一次。

该项目已采用 Microsoft开源行为准则。 有关详细信息,请参阅 行为准则常见问题解答 或与 opencode@microsoft.com 联系,了解任何其他问题或意见。

若要参与此库,请阅读 贡献指南 了解有关如何生成和测试代码的详细信息。

印象