Sdílet prostřednictvím


Klientská knihovna serializátoru Json pro Azure Schema Registry pro JavaScript – verze 1.0.0

Azure Schema Registry je služba úložiště schémat hostovaná službou Azure Event Hubs, která poskytuje úložiště schématu, správu verzí a správu. Tento balíček poskytuje serializátor Json umožňující serializaci a deserializaci datových částí obsahujících data serializovaná json.

Klíčové odkazy:

Začínáme

Požadavky

  • Předplatné Azure
  • Existující prostředek registru schématu

Instalace balíčku @azure/schema-registry-json

Nainstalujte klientskou knihovnu Azure Text Analytics pro JavaScript s npm:

npm install @azure/schema-registry-json

Klíčové koncepty

JsonSchemaSerializer

Poskytuje rozhraní API pro serializaci a deserializaci z JSON zabaleného ve zprávě s polem typu obsahu obsahujícím ID schématu. Používá SchemaRegistryClient z balíčku @azure/schema-registry k získání ID schématu z definice schématu nebo naopak. Poskytnuté rozhraní API má interní mezipaměť, aby se zabránilo volání služby registru schématu, pokud je to možné.

Zprávy

Serializátor ve výchozím nastavení vytvoří zprávy strukturované takto:

  • data: pole bajtů obsahující data JSON.

  • contentType: řetězec následujícího formátu application/json+<Schema ID>, kde application/json část signalizuje, že tato zpráva má datovou část serializovanou json a <Schema Id> část je ID schématu, které služba Registru schématu přiřazená schématu použitému k serializaci této datové části.

Ne všechny služby zasílání zpráv podporují stejnou strukturu zpráv. Chcete-li povolit integraci s těmito službami, serializátor může pracovat s vlastními strukturami zpráv nastavením možnosti messageAdapter v konstruktoru s odpovídajícím producentem a příjemcem zpráv. Klientské knihovny zasílání zpráv v Azure exportují výchozí adaptéry pro jejich typy zpráv.

Příklady

Serializace a deserializace EventData@azure/event-hubs

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);
});

Serializátor nekontroluje, zda deserializovaná hodnota odpovídá schématu, ale poskytuje možnost implementovat takové ověření. Aplikace může předat funkci zpětného volání ověření jako jednu z možností deserializovat metodu, kde je možné implementovat ověřování schématu. Pokud chcete zjistit, jak se ověření implementuje, projděte si ukázku schemaRegistryJsonWithValidation.

Řešení problémů

Serializátor Json komunikuje se službou Schema Registry podle potřeby k registraci schématu nebo dotazování schémat a volání těchto služeb by mohla vyvolat RestError. Chyby typu Error budou navíc vyvolána při selhání serializace nebo deserializace. Vlastnost cause bude obsahovat podkladovou chybu, která byla vyvolána z analyzátoru JSON.

Protokolování

Povolení protokolování může pomoct odhalit užitečné informace o chybách. Pokud chcete zobrazit protokol požadavků a odpovědí HTTP, nastavte proměnnou prostředí AZURE_LOG_LEVEL na info. Případně můžete protokolování povolit za běhu voláním setLogLevel v @azure/logger:

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

setLogLevel("info");

Další kroky

Podrobné příklady použití této knihovny najdete v ukázkách adresáři.

Přispívající

Tento projekt vítá příspěvky a návrhy. Většina příspěvků vyžaduje souhlas s licenční smlouvou s přispěvatelem (CLA), která deklaruje, že máte právo a ve skutečnosti nám udělíte práva k používání vašeho příspěvku. Podrobnosti najdete v https://cla.microsoft.com.

Když odešlete žádost o přijetí změn, robot CLA automaticky určí, jestli potřebujete poskytnout CLA, a odpovídajícím způsobem vyzdobit žádost o přijetí změn (např. popisek, komentář). Stačí postupovat podle pokynů poskytovaných robotem. Stačí to udělat jen jednou napříč všemi úložištěmi pomocí naší cla.

Tento projekt přijal pravidla chování microsoftu open source . Další informace najdete v nejčastějších dotazech k kodexu chování nebo kontaktujte opencode@microsoft.com s dalšími dotazy nebo komentáři.

Pokud chcete přispívat do této knihovny, přečtěte si průvodce přispívání a přečtěte si další informace o vytváření a testování kódu.

imprese