Delen via


Azure Schema Registry Json Serializer-clientbibliotheek voor JavaScript - versie 1.0.0

Azure Schema Registry is een service voor schemaopslagplaats die wordt gehost door Azure Event Hubs, die schemaopslag, versiebeheer en beheer biedt. Dit pakket biedt een Json-serialisatiefunctie die payloads kan serialiseren en deserialiseren die Json-geserialiseerde gegevens bevatten.

Sleutelkoppelingen:

Slag

Voorwaarden

Het @azure/schema-registry-json-pakket installeren

Installeer de Azure Text Analytics-clientbibliotheek voor JavaScript met npm:

npm install @azure/schema-registry-json

Sleutelbegrippen

JsonSchemaSerializer

Biedt API voor het serialiseren en deserialiseren van JSON die is verpakt in een bericht met een inhoudstypeveld met de schema-id. Gebruikt SchemaRegistryClient uit het @azure-/schemaregister--pakket om schema-id's op te halen uit de schemadefinitie of omgekeerd. De opgegeven API heeft interne cache om te voorkomen dat de schemaregisterservice indien mogelijk wordt aangeroepen.

Berichten

Standaard maakt de serializer berichten die als volgt zijn gestructureerd:

  • data: een bytematrix met JSON-gegevens.

  • contentType: een tekenreeks van de volgende indeling application/json+<Schema ID> waarbij het application/json onderdeel aangeeft dat dit bericht een Json-geserialiseerde nettolading heeft en het <Schema Id> onderdeel de schema-id is die de schemaregisterservice is toegewezen aan het schema dat wordt gebruikt om deze nettolading te serialiseren.

Niet alle berichtenservices ondersteunen dezelfde berichtstructuur. Om integratie met dergelijke services mogelijk te maken, kan de serializer reageren op aangepaste berichtstructuren door de optie messageAdapter in de constructor in te stellen met een bijbehorende berichtproducent en consument. Azure Messaging-clientbibliotheken exporteren standaardadapters voor hun berichttypen.

Voorbeelden

De EventData van een @azure/event-hubsserialiseren en deserialiseren

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

De serializer controleert niet of de gedeserialiseerde waarde overeenkomt met het schema, maar biedt een optie om een dergelijke validatie te implementeren. De toepassing kan een callback-functie voor validatie doorgeven als een van de opties voor de deserialize-methode waar schemavalidatie kan worden geïmplementeerd. Bekijk het schemaRegistryJsonWithValidation voorbeeld om te zien hoe de validatie kan worden geïmplementeerd.

Probleemoplossing

De Json-serializer communiceert indien nodig met het schemaregister service om schema's te registreren of query's uit te voeren. Deze serviceoproepen kunnen een RestError-veroorzaken. Bovendien worden er fouten van het type Error gegenereerd wanneer serialisatie of deserialisatie mislukt. De eigenschap cause bevat de onderliggende fout die is gegenereerd vanuit de JSON-parser.

Logboekregistratie

Het inschakelen van logboekregistratie kan helpen nuttige informatie over fouten te ontdekken. Als u een logboek met HTTP-aanvragen en -antwoorden wilt zien, stelt u de omgevingsvariabele AZURE_LOG_LEVEL in op info. U kunt logboekregistratie ook tijdens runtime inschakelen door setLogLevel aan te roepen in de @azure/logger:

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

setLogLevel("info");

Volgende stappen

Bekijk de voorbeelden map voor gedetailleerde voorbeelden over het gebruik van deze bibliotheek.

Bijdragen

Dit project verwelkomt bijdragen en suggesties. Voor de meeste bijdragen moet u akkoord gaan met een Licentieovereenkomst voor inzenders (CLA) waarin wordt aangegeven dat u het recht hebt om, en daadwerkelijk, ons de rechten te verlenen om uw bijdrage te gebruiken. Ga naar https://cla.microsoft.comvoor meer informatie.

Wanneer u een pull-aanvraag indient, bepaalt een CLA-bot automatisch of u een CLA moet opgeven en de pull-aanvraag op de juiste wijze moet inrichten (bijvoorbeeld label, opmerking). Volg gewoon de instructies van de bot. U hoeft dit slechts eenmaal te doen voor alle opslagplaatsen met behulp van onze CLA.

Dit project heeft de Microsoft Open Source-gedragscodeaangenomen. Zie de Veelgestelde vragen over gedragscodes voor meer informatie of neem contact op met opencode@microsoft.com met eventuele aanvullende vragen of opmerkingen.

Als u een bijdrage wilt leveren aan deze bibliotheek, leest u de gids voor bijdragen voor meer informatie over het bouwen en testen van de code.

indrukken