다음을 통해 공유


JavaScript용 Azure Schema Registry Json Serializer 클라이언트 라이브러리 - 버전 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/스키마 레지스트리 패키지의 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/loggersetLogLevel 호출하여 런타임에 로깅을 사용하도록 설정할 수 있습니다.

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

setLogLevel("info");

다음 단계

이 라이브러리를 사용하는 방법에 대한 자세한 예제는 샘플 디렉터리를 살펴보세요.

기여

이 프로젝트는 기여와 제안을 환영합니다. 대부분의 기여는 귀하가 귀하의 기여를 사용할 권리를 부여할 권리가 있음을 선언하는 CLA(기여자 사용권 계약)에 동의해야 합니다. 자세한 내용은 https://cla.microsoft.com방문하세요.

끌어오기 요청을 제출하면 CLA 봇은 CLA를 제공하고 PR을 적절하게 데코레이팅해야 하는지 여부를 자동으로 결정합니다(예: 레이블, 주석). 봇에서 제공하는 지침을 따르기만 하면 됩니다. CLA를 사용하여 모든 리포지토리에서 한 번만 이 작업을 수행해야 합니다.

이 프로젝트는 Microsoft 오픈 소스 행동 강령 채택했습니다. 자세한 내용은 행동 강령 FAQ 참조하거나 추가 질문이나 의견을 opencode@microsoft.com 문의하세요.

이 라이브러리에 기여하려면 기여 가이드 읽어 코드를 빌드하고 테스트하는 방법에 대해 자세히 알아보세요.

  • Javascript용 Microsoft Azure SDK

노출