JavaScript 用 Azure Schema Registry Json シリアライザー クライアント ライブラリ - バージョン 1.0.0
Azure Schema Registry は、Azure Event Hubs によってホストされるスキーマ リポジトリ サービスであり、スキーマ ストレージ、バージョン管理、管理を提供します。 このパッケージは、Json シリアル化されたデータを含むペイロードをシリアル化および逆シリアル化できる Json シリアライザーを提供します。
主要なリンク:
- ソース コード の
- パッケージ (npm)
- API リファレンス ドキュメント
- サンプル
はじめ
- Node.jsの LTS バージョンを する
前提 条件
@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-hubs
の EventData
をシリアル化および逆シリアル化する
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/logger
で setLogLevel
を呼び出すことによって、実行時にログを有効にすることもできます。
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 の
Azure SDK for JavaScript