미리보기 API 액세스

이 페이지에서는 Classroom API 미리보기 기능에 액세스하고 미리보기 버전을 지정하는 방법을 설명합니다.

안정적인 v1 API와 비교할 때 미리보기 기능을 사용할 때 고려해야 할 두 가지 사항은 다음과 같습니다.

  1. 사전 체험판 또는 미리보기 프로그램의 API 기능은 표준 클라이언트 라이브러리에 노출되지 않으며 기본적으로 HTTP를 통해 액세스하지 못할 수도 있습니다.
  2. 언제든지 미리보기에 여러 API 상태 또는 버전이 있을 수 있습니다.

클라이언트 라이브러리에서 미리보기 기능 사용 설정

Classroom API를 사용하는 일반적인 옵션은 클라이언트 라이브러리를 사용하는 것입니다. 클라이언트 라이브러리에는 세 가지 유형이 있습니다.

  1. 동적으로 생성된 클라이언트 라이브러리
  2. Google 제공 정적 클라이언트 라이브러리
  3. 자체 커스텀 클라이언트 라이브러리

이 API는 동적으로 생성되거나 Google에서 제공하는 정적 라이브러리를 사용하는 것이 좋습니다. 자체 라이브러리를 빌드해야 하는 경우 클라이언트 라이브러리 빌드를 참조하세요. 이 가이드에서는 라이브러리를 직접 만드는 것을 다루지 않지만 동적 라이브러리 섹션을 검토하여 미리보기 라벨과 탐색에서의 역할에 대해 알아봐야 합니다.

동적 라이브러리

Python과 같은 언어의 라이브러리는 검색 서비스검색 문서를 사용하여 런타임에 클라이언트 라이브러리를 생성합니다.

검색 문서는 머신에서 읽을 수 있는 사양으로, REST API를 설명하고 사용하기 위한 사양입니다. 클라이언트 라이브러리, IDE 플러그인, 기타 Google API와 상호작용하는 도구를 빌드하는 데 사용됩니다. 한 서비스는 여러 검색 문서를 제공할 수 있습니다.

Classroom API 서비스 (classroom.googleapis.com)의 검색 문서는 다음 엔드포인트에서 찾을 수 있습니다.

https://classroom.googleapis.com/$discovery/rest?labels=PREVIEW_LABEL&version=v1&key=API_KEY

미리보기 API 사용 시 중요한 차이점은 적절한 label를 지정하는 것입니다. 클래스룸 공개 미리보기의 경우 이 라벨은 DEVELOPER_PREVIEW입니다.

미리보기 메서드를 사용하여 Python 라이브러리를 생성하고 클래스룸 서비스를 인스턴스화하려면 적절한 서비스, 사용자 인증 정보, 라벨을 사용하여 검색 URL을 지정하면 됩니다.

classroom_service_with_preview_features = googleapiclient.discovery.build(
  serviceName='classroom',
  version='v1',
  credentials=credentials,
  static_discovery=False,
  discoveryServiceUrl='https://classroom.googleapis.com/$discovery/rest?labels=DEVELOPER_PREVIEW&key=API_KEY)'

각 언어에 대한 자세한 내용은 개별 Google API 클라이언트 라이브러리 문서를 참조하세요.

정적 라이브러리

자바, Node.js, PHP, C#, Go와 같은 언어의 클라이언트 라이브러리는 소스에서 빌드되어야 합니다. 이러한 라이브러리는 개발자에게 제공되며 미리보기 기능이 이미 통합되어 있습니다.

공개 미리보기의 경우 클래스룸 클라이언트 라이브러리를 다른 Workspace 개발자 프리뷰 프로그램 클라이언트 라이브러리와 함께 찾을 수 있습니다. 비공개 미리보기의 경우 정적 라이브러리 생성이 필요하면 Google 담당자에게 문의하세요.

미리보기 기능이 없는 표준 클라이언트 라이브러리를 가져오는 대신 이러한 로컬 라이브러리를 사용하도록 일반적인 종속 항목 구성을 수정해야 할 수 있습니다.

예를 들어 Go 클라이언트 라이브러리를 사용하려면 go.mod 파일에서 replace 지시어를 사용하여 로컬 디렉터리의 모듈을 요구해야 합니다.

module example.com/app

go 1.21.1

require (
    golang.org/x/oauth2 v0.12.0
    google.golang.org/api v0.139.0 // Classroom library is in here.
)

require (
  ...
)

// Use a local copy of the Go client library.
replace google.golang.org/api v0.139.0 => ../google-api-go-client

또 다른 예로 Node.js와 npm을 사용하는 경우 Node.js 클라이언트 라이브러리 다운로드 (googleapis-classroom-1.0.4.tgz)를 package.json의 로컬 종속 항목으로 추가합니다.

{
  "name": "nodejs-classroom-example",
  "version": "1.0.0",
  ...
  "dependencies": {
    "@google-cloud/local-auth": "^2.1.0",
    "googleapis": "^95.0.0",
    "classroom-with-preview-features": "file:./googleapis-classroom-1.0.4.tgz"
  }
}

그런 다음 애플리케이션에서 일반 종속 항목 외에도 classroom-with-preview-features 모듈을 요청하고 이 모듈에서 classroom 서비스를 인스턴스화합니다.

const {authenticate} = require('@google-cloud/local-auth');
const {google} = require('googleapis');
const classroomWithPreviewFeatures = require('classroom-with-preview-features');

...

const classroom = classroomWithPreviewFeatures.classroom({
  version: 'v1',
  auth: auth,
});

...

미리보기 API 버전 지정

정적 라이브러리를 사용하는지 동적 라이브러리를 사용하는지에 관계없이 미리보기 기능이 있는 메서드에 API를 호출할 때는 미리보기 버전을 지정해야 합니다.

사용 가능한 다양한 버전과 포함된 기능은 Classroom API 로드맵에 설명되어 있습니다. 메서드 및 필드 참조 문서에서는 메서드 또는 필드를 사용할 수 있는 버전도 설명합니다.

버전을 지정하려면 요청에서 PreviewVersion 필드를 설정합니다. 예를 들어 기준표 CRUD 미리보기 API를 사용하여 기준표를 만들려면 CREATE 요청에서 previewVersionV1_20231110_PREVIEW로 설정합니다.

rubric = service.courses().courseWork().rubrics().create(
            courseId=course_id,
            courseWorkId=coursework_id,
            # Specify the preview version. Rubrics CRUD capabilities are
            # supported in V1_20231110_PREVIEW and later.
            previewVersion="V1_20231110_PREVIEW",
            body=body
).execute()

미리보기 메서드 호출과 연결된 리소스에도 호출에 사용되는 previewVersion가 읽기 전용 필드로 포함되어 사용 중인 버전을 파악하는 데 도움이 됩니다. 예를 들어 이전 CREATE 호출의 응답에 V1_20231110_PREVIEW 값이 포함되어 있습니다.

print(json.dumps(rubric, indent=4))
{
  "courseId": "123",
  "courseWorkId": "456",
  "creationTime": "2023-10-23T18:18:29.932Z",
  "updateTime": "2023-10-23T18:18:29.932Z",
  "id": "789",
  "criteria": [...],
  # The preview version used in the call that returned this resource.
  "previewVersion": "V1_20231110_PREVIEW",
  ...
}

HTTP 요청

HTTP를 통해 Classroom API를 직접 사용할 수도 있습니다.

클라이언트 라이브러리 없이 HTTP를 요청하는 경우에도 미리보기 버전을 지정하여 미리보기 기능을 사용 설정해야 합니다. 이렇게 하려면 X-Goog-Visibilities 헤더가 있는 label앞에서 언급한 미리보기 버전을 쿼리 매개변수 또는 POST 본문 필드로 설정합니다. 공개 미리보기의 경우 라벨은 DEVELOPER_PREVIEW입니다.

예를 들어 다음 curl 요청은 적절한 공개 상태 라벨과 미리보기 버전을 사용하여 기준표 서비스에 대한 LIST를 호출합니다.

curl \
  'https://classroom.googleapis.com/v1/courses/COURSE_ID/courseWork/COURSE_ID/rubrics?key=API_KEY&previewVersion=V1_20231110_PREVIEW' \
  --header 'X-Goog-Visibilities: DEVELOPER_PREVIEW' \
  --header 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
  --header 'Accept: application/json' \
  --compressed

예를 들어 POST 요청을 할 때 요청 본문에 미리보기 버전을 지정할 수도 있습니다.

curl --request PATCH \
  'https://classroom.googleapis.com/v1/courses/COURSE_ID/courseWork/COURSE_ID//rubrics/RUBRIC_ID?updateMask=criteria&key=API_KEY' \
  --header 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --data '{"criteria":"[...]", "preview_version": "V1_20231110_PREVIEW"}' \
  --compressed

각 HTTP 요청에 대한 API는 REST 문서에 설명되어 있습니다.