JavaScript용 Azure Schema Registry Json Serializer 클라이언트 라이브러리 - 버전 1.0.0
Azure Schema Registry는 스키마 스토리지, 버전 관리 및 관리를 제공하는 Azure Event Hubs에서 호스트하는 스키마 리포지토리 서비스입니다. 이 패키지는 Json 직렬화된 데이터를 포함하는 페이로드를 직렬화 및 역직렬화할 수 있는 Json 직렬 변환기를 제공합니다.
키 링크:
- 소스 코드
- 패키지(npm)
- API 참조 설명서
- 샘플
시작
필수 구성 요소
@azure/schema-registry-json
패키지 설치
npm
사용하여 JavaScript용 Azure Text Analytics 클라이언트 라이브러리를 설치합니다.
npm install @azure/schema-registry-json
주요 개념
JsonSchemaSerializer
스키마 ID가 포함된 콘텐츠 형식 필드를 사용하여 메시지에 래핑된 JSON으로 직렬화하고 역직렬화하는 API를 제공합니다.
@azure/스키마 레지스트리 패키지의 SchemaRegistryClient
사용하여 스키마 정의에서 스키마 ID를 얻거나 그 반대의 경우도 마찬가지입니다. 제공된 API에는 가능한 경우 스키마 레지스트리 서비스를 호출하지 않도록 내부 캐시가 있습니다.
메시지
기본적으로 serializer는 다음과 같이 구조화된 메시지를 만듭니다.
data
: JSON 데이터를 포함하는 바이트 배열입니다.contentType
:application/json
파트가 이 메시지에 Json 직렬화된 페이로드가 있고<Schema Id>
부분이 이 페이로드를 serialize하는 데 사용되는 스키마에 할당된 스키마 ID임을 알리는application/json+<Schema ID>
형식의 문자열입니다.
모든 메시징 서비스가 동일한 메시지 구조를 지원하는 것은 아닙니다. 이러한 서비스와 통합할 수 있도록 serializer는 해당 메시지 생산자 및 소비자를 사용하여 생성자에서 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);
});
serializer는 역직렬화된 값이 스키마와 일치하는지 여부를 확인하지 않지만 이러한 유효성 검사를 구현하는 옵션을 제공합니다. 애플리케이션은 스키마 유효성 검사를 구현할 수 있는 역직렬화 메서드에 대한 옵션 중 하나로 유효성 검사 콜백 함수를 전달할 수 있습니다.
유효성 검사를 구현하는 방법을 보려면 schemaRegistryJsonWithValidation
샘플을 체크 아웃하세요.
문제 해결
Json serializer는 스키마를 등록하거나 쿼리하기 위해 필요에 따라 스키마 레지스트리 서비스와 통신하며 이러한 서비스 호출은 RestErrorthrow할 수 있습니다. 또한 serialization 또는 deserialization이 실패하면 Error
형식의 오류가 throw됩니다.
cause
속성에는 JSON 파서에서 throw된 기본 오류가 포함됩니다.
로깅
로깅을 사용하도록 설정하면 오류에 대한 유용한 정보를 파악하는 데 도움이 될 수 있습니다. HTTP 요청 및 응답 로그를 보려면 AZURE_LOG_LEVEL
환경 변수를 info
설정합니다. 또는 @azure/logger
setLogLevel
호출하여 런타임에 로깅을 사용하도록 설정할 수 있습니다.
const { setLogLevel } = require("@azure/logger");
setLogLevel("info");
다음 단계
이 라이브러리를 사용하는 방법에 대한 자세한 예제는 샘플 디렉터리를 살펴보세요.
기여
이 프로젝트는 기여와 제안을 환영합니다. 대부분의 기여는 귀하가 귀하의 기여를 사용할 권리를 부여할 권리가 있음을 선언하는 CLA(기여자 사용권 계약)에 동의해야 합니다. 자세한 내용은 https://cla.microsoft.com방문하세요.
끌어오기 요청을 제출하면 CLA 봇은 CLA를 제공하고 PR을 적절하게 데코레이팅해야 하는지 여부를 자동으로 결정합니다(예: 레이블, 주석). 봇에서 제공하는 지침을 따르기만 하면 됩니다. CLA를 사용하여 모든 리포지토리에서 한 번만 이 작업을 수행해야 합니다.
이 프로젝트는 Microsoft 오픈 소스 행동 강령 채택했습니다. 자세한 내용은 행동 강령 FAQ 참조하거나 추가 질문이나 의견을 opencode@microsoft.com 문의하세요.
이 라이브러리에 기여하려면 기여 가이드 읽어 코드를 빌드하고 테스트하는 방법에 대해 자세히 알아보세요.
관련 프로젝트
Azure SDK for JavaScript