次の方法で共有


JavaScript 用 Azure Schema Registry Json シリアライザー クライアント ライブラリ - バージョン 1.0.0

Azure Schema Registry は、Azure Event Hubs によってホストされるスキーマ リポジトリ サービスであり、スキーマ ストレージ、バージョン管理、管理を提供します。 このパッケージは、Json シリアル化されたデータを含むペイロードをシリアル化および逆シリアル化できる Json シリアライザーを提供します。

主要なリンク:

はじめ

前提 条件

@azure/schema-registry-json パッケージをインストールする

npmを使用して JavaScript 用の Azure Text Analytics クライアント ライブラリをインストールします。

npm install @azure/schema-registry-json

主な概念

JsonSchemaSerializer

スキーマ ID を含むコンテンツ タイプ フィールドを含むメッセージでラップされた JSON にシリアル化および逆シリアル化する API を提供します。 @azure/schema-registry パッケージの SchemaRegistryClient を使用して、スキーマ定義からスキーマ ID を取得します。その逆も同様です。 提供される API には、可能な限りスキーマ レジストリ サービスの呼び出しを回避するための内部キャッシュがあります。

メッセージ

既定では、シリアライザーは次のように構造化されたメッセージを作成します。

  • data: JSON データを含むバイト配列。

  • contentType: 次の形式の文字列 application/json+<Schema ID>application/json パーツは、このメッセージに Json シリアル化されたペイロードがあることを通知し、<Schema Id> 部分は、このペイロードのシリアル化に使用されるスキーマに割り当てられたスキーマ レジストリ サービスのスキーマ ID です。

すべてのメッセージング サービスが同じメッセージ構造をサポートしているわけではありません。 このようなサービスとの統合を有効にするために、シリアライザーは、対応するメッセージ プロデューサーとコンシューマーを使用してコンストラクターの messageAdapter オプションを設定することで、カスタム メッセージ構造に対して動作できます。 Azure メッセージング クライアント ライブラリは、メッセージの種類の既定のアダプターをエクスポートします。

@azure/event-hubsEventData をシリアル化および逆シリアル化する

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

シリアライザーは、逆シリアル化された値がスキーマと一致するかどうかを確認しませんが、そのような検証を実装するオプションを提供します。 アプリケーションは、スキーマ検証を実装できる逆シリアル化メソッドにオプションの 1 つとして検証コールバック関数を渡すことができます。 検証がどのように実装されるかを確認するには、schemaRegistryJsonWithValidation サンプルを確認してください。

トラブルシューティング

Json シリアライザーは、スキーマの登録またはクエリを実行するために必要に応じて、Schema Registry サービスと通信します。これらのサービス呼び出しでは、RestErrorがスローされる可能性があります。 さらに、シリアル化または逆シリアル化に失敗すると、Error 型のエラーがスローされます。 cause プロパティには、JSON パーサーからスローされた基になるエラーが含まれます。

伐採

ログ記録を有効にすると、エラーに関する有用な情報を明らかにするのに役立つ場合があります。 HTTP 要求と応答のログを表示するには、AZURE_LOG_LEVEL 環境変数を infoに設定します。 または、@azure/loggersetLogLevel を呼び出すことによって、実行時にログを有効にすることもできます。

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

setLogLevel("info");

次の手順

このライブラリの使用方法の詳細な例については、ディレクトリ サンプルを参照してください。

貢献

このプロジェクトは、投稿と提案を歓迎します。 ほとんどの投稿では、お客様が投稿を使用する権利を当社に付与する権利を有し、実際に行うことを宣言する共同作成者ライセンス契約 (CLA) に同意する必要があります。 詳細については、https://cla.microsoft.comを参照してください。

プル要求を送信すると、CLA ボットは、CLA を提供し、PR を適切に装飾する必要があるかどうかを自動的に判断します (ラベル、コメントなど)。 ボットによって提供される指示に従うだけです。 これは、CLA を使用するすべてのリポジトリで 1 回だけ行う必要があります。

このプロジェクトでは、Microsoft オープン ソースの行動規範を採用しています。 詳細については、行動規範に関する FAQ を参照するか、その他の質問やコメントを opencode@microsoft.com にお問い合わせください。

このライブラリに投稿する場合は、コードをビルドしてテストする方法の詳細については、投稿ガイド を参照してください。

  • Microsoft Azure SDK for Javascript

インプレッション