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
- Een Azure-abonnement
- Een bestaande schemaregisterresource
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 indelingapplication/json+<Schema ID>
waarbij hetapplication/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-hubs
serialiseren 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.
Verwante projecten
Azure SDK for JavaScript