Delen via


Azure Schema Registry Json Serializer-clientbibliotheek voor JavaScript - versie 1.0.0-beta.1

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 nettoladingen met JSON-geserialiseerde gegevens kan serialiseren en deserialiseren.

Belangrijke koppelingen:

Aan de slag

Vereisten

Installeer het pakket @azure/schema-registry-json

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

npm install @azure/schema-registry-json

Belangrijkste concepten

JsonSerializer

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

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> deel de schema-id is die de Schema Registry-service 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 messageAdapter optie in de constructor in te stellen met een bijbehorende berichtproducent en -consument. Azure Messaging-clientbibliotheken exporteren standaardadapters voor hun berichttypen.

Voorbeelden

Een serialiseren en deserialiseren @azure/event-hubsEventData

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

const client = new SchemaRegistryClient(
  "<fully qualified namespace>",
  new DefaultAzureCredential()
);
const serializer = new JsonSerializer(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);

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

Problemen oplossen

De Json-serializer communiceert zo nodig met de schemaregisterservice om schema's te registreren of op te vragen. Deze service-aanroepen kunnen een RestError genereren. Bovendien worden er fouten van het type Error gegenereerd wanneer serialisatie of deserialisatie mislukt. De cause eigenschap bevat de onderliggende fout die is gegenereerd vanuit de JSON-parser.

Logboekregistratie

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

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

setLogLevel("info");

Volgende stappen

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

Bijdragen

Wij verwelkomen bijdragen en suggesties voor dit project. Voor de meeste bijdragen moet u instemmen met een licentieovereenkomst voor bijdragers (CLA: Contributor License Agreement) waarin u verklaart dat u gerechtigd bent ons het recht te geven uw bijdrage te gebruiken, en dat u dit ook doet. Ga naar https://cla.microsoft.com voor meer informatie.

Wanneer u een pull-aanvraag indient, wordt met een CLA-bot automatisch bepaald of u een CLA moet verschaffen en wordt de pull-aanvraag dienovereenkomstig opgemaakt (bijvoorbeeld met een label of commentaar). Volg gewoon de instructies van de bot. U hoeft dit maar eenmaal te doen voor alle repo's waar gebruik wordt gemaakt van onze CLA.

Op dit project is de Microsoft Open Source Code of Conduct (Microsoft Open Source-gedragscode) van toepassing. Zie voor meer informatie de veelgestelde vragen over de gedragscode of neem contact op opencode@microsoft.com met eventuele aanvullende vragen of opmerkingen.

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

Weergaven