Aracılığıyla paylaş


JavaScript için Azure Schema Registry Json Serializer istemci kitaplığı - sürüm 1.0.0

Azure Schema Registry, Azure Event Hubs tarafından barındırılan ve şema depolama, sürüm oluşturma ve yönetim sağlayan bir şema deposu hizmetidir. Bu paket, Json serileştirilmiş verileri içeren yükleri seri hale getirebilen ve seri durumdan çıkarabilen bir Json seri hale getirici sağlar.

Önemli bağlantılar:

Başlarken

  • Node.js LTS sürümleri

Önkoşullar

@azure/schema-registry-json paketini yükleme

npmile JavaScript için Azure Metin Analizi istemci kitaplığını yükleyin:

npm install @azure/schema-registry-json

Temel kavramlar

JsonSchemaSerializer

Şema kimliğini içeren içerik türü alanına sahip bir iletiye sarmalanmış JSON'a seri hale getirmek ve seri durumdan çıkarmak için API sağlar. Şema tanımından şema kimliklerini almak için @azure/schema-registry paketinden SchemaRegistryClient kullanır. Mümkün olduğunda şema kayıt defteri hizmetinin çağrılmasını önlemek için sağlanan API'nin iç önbelleği vardır.

Ileti

Varsayılan olarak, seri hale getirici aşağıdaki gibi yapılandırılmış iletiler oluşturur:

  • data: JSON verilerini içeren bir bayt dizisi.

  • contentType: application/json bölümünün bu iletinin Json serileştirilmiş yükü olduğunu ve <Schema Id> bölümü ise bu yükü serileştirmek için kullanılan şemaya atanan Şema Kayıt Defteri hizmetinin Şema Kimliği olduğunu gösterdiği application/json+<Schema ID> aşağıdaki biçimdeki bir dize.

Tüm mesajlaşma hizmetleri aynı ileti yapısını desteklemez. Bu tür hizmetlerle tümleştirmeyi etkinleştirmek için seri hale getirici, oluşturucuda ilgili ileti üreticisi ve tüketici ile messageAdapter seçeneğini ayarlayarak özel ileti yapılarında işlem yapabilir. Azure mesajlaşma istemci kitaplıkları, ileti türleri için varsayılan bağdaştırıcıları dışarı aktarır.

Örnekler

bir @azure/event-hubsEventData seri hale getirme ve seri durumdan çıkarma

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

Seri hale getirici seri durumdan çıkarılmış değerin şemayla eşleşip eşleşmediğini denetlemez, ancak bu doğrulamayı uygulamak için bir seçenek sağlar. Uygulama, şema doğrulamasının uygulanabildiği seri durumdan çıkarma yöntemine seçeneklerden biri olarak bir doğrulama geri çağırma işlevi geçirebilir. Doğrulamanın nasıl uygulanabileceğini görmek için lütfen schemaRegistryJsonWithValidation örneğini inceleyin.

Sorun giderme

Json serileştiricisi, şemaları kaydetmek veya sorgulamak için gerektiğinde Schema Registry hizmetiyle iletişim kurar ve bu hizmet çağrıları birRestError oluşturabilir. Ayrıca, serileştirme veya seri durumdan çıkarma başarısız olduğunda Error türünde hatalar oluşur. cause özelliği, JSON ayrıştırıcısından atılan temel hatayı içerir.

Günlük tutmak

Günlüğe kaydetmeyi etkinleştirmek, hatalarla ilgili yararlı bilgilerin ortaya çıkmasına yardımcı olabilir. HTTP isteklerinin ve yanıtlarının günlüğünü görmek için AZURE_LOG_LEVEL ortam değişkenini infoolarak ayarlayın. Alternatif olarak, @azure/loggersetLogLevel çağrılarak günlükler çalışma zamanında etkinleştirilebilir:

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

setLogLevel("info");

Sonraki adımlar

Bu kitaplığın nasıl kullanılacağına ilişkin ayrıntılı örnekler için lütfen örnekleri dizinine göz atın.

Katkıda

Bu proje katkıları ve önerileri memnuniyetle karşılar. Çoğu katkı, Katkıda Bulunan Lisans Sözleşmesi'ni (CLA) kabul ederek bize katkınızı kullanma hakları verme hakkına sahip olduğunuzu bildirmenizi gerektirir. Ayrıntılar için https://cla.microsoft.comadresini ziyaret edin.

Çekme isteği gönderdiğinizde, CLA botu otomatik olarak CLA sağlamanız gerekip gerekmediğini belirler ve çekme isteğini uygun şekilde süsler (örneğin, etiket, açıklama). Bot tarafından sağlanan yönergeleri izlemeniz yeterlidir. Cla'mızı kullanarak bunu tüm depolarda yalnızca bir kez yapmanız gerekir.

Bu proje, Microsoft Açık Kaynak Kullanım Kurallarıbenimsemiştir. Daha fazla bilgi için bkz. Davranış Kuralları SSS veya ek sorularınız veya yorumlarınızla opencode@microsoft.com iletişime geçin.

Bu kitaplığa katkıda bulunmak istiyorsanız kodu oluşturma ve test etme hakkında daha fazla bilgi edinmek için lütfen katkıda bulunma kılavuzu okuyun.

Gösterimler