이 페이지에서는 Classroom API 미리보기 기능에 액세스하는 방법을 설명하고 지정할 수 있습니다
공개 버전과 비교했을 때 미리보기 기능을 사용할 때 고려해야 할 3가지 사항 v1 API는 다음과 같습니다.
- 호출하는 Google Cloud 프로젝트가 Google Workspace에 등록되어 있어야 합니다. 개발자 프리뷰 프로그램 및 Google에서 허용한 허용 여부
- 사전 체험판 또는 미리보기 프로그램의 API 기능은 HTTP를 통해 기본적으로 액세스하지 못할 수 있습니다.
- 언제든지 여러 API 상태 또는 버전이 있을 수 있고 미리보기입니다.
클라이언트 라이브러리에서 미리보기 기능 사용 설정
Classroom API를 사용하는 일반적인 옵션은 클라이언트 라이브러리를 사용하는 것입니다. 거기 세 가지 유형의 클라이언트 라이브러리입니다.
- 동적으로 생성된 클라이언트 라이브러리
- Google에서 제공하는 정적 클라이언트 라이브러리
- 자체 커스텀 클라이언트 라이브러리
동적으로 생성하거나 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 클라이언트 라이브러리 문서를 참조하세요. 있습니다.
정적 라이브러리
Java, Node.js, PHP, C#, Go와 같은 언어로 클라이언트 라이브러리를 빌드해야 함 가져올 수 있습니다 이 라이브러리는 자동으로 제공되며 미리보기 기능이 있습니다. 이미 통합되었습니다.
공개 미리보기의 경우 클래스룸 클라이언트 라이브러리를 다른 클라이언트 라이브러리와 함께 찾을 수 있습니다. Workspace 개발자 프리뷰 프로그램 클라이언트 라이브러리. 비공개 미리보기의 경우 정적 라이브러리를 생성해야 하는 경우 Google 담당자에게 문의하세요.
이러한 종속 항목을 사용하려면 일반적인 종속 항목 구성을 수정해야 할 수도 있습니다. 로컬 라이브러리를 가져오는 것보다 미리보기 기능이 있습니다.
예를 들어 Go 클라이언트 라이브러리를 사용하려면 replace
지시어를 사용하여 로컬 디렉터리의 모듈을 요구합니다.go.mod
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를 호출할 때의 미리보기 버전
사용 가능한 여러 버전과 여기에 포함된 기능이 문서화되어 있습니다. 클래스룸 API 로드맵 메서드 및 필드는 메서드 또는 필드를 사용할 수 있는 버전을 설명합니다.
요청의 PreviewVersion 필드를 설정하여 버전을 지정합니다.
예를 들어 기준표 CRUD 미리보기 API를 사용하여 기준표를 만들려면
CREATE 요청에서 previewVersion
을 V1_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 요청을 하는 경우에도
미리보기 버전은
미리보기 버전을 지정합니다 이 작업은 label
X-Goog-Visibilities
헤더 및 앞서 언급한 미리보기 버전을
쿼리 매개변수 또는 POST 본문 필드 (해당 개별 API 참조)
참조 문서 참조). 공개 미리보기의 라벨은 DEVELOPER_PREVIEW
입니다.
예를 들어 다음 curl 요청은 기준표 서비스에 LIST 호출을 실행합니다. 적절한 공개 상태 라벨 및 미리보기 버전으로 바꿉니다.
curl \
'https://classroom.googleapis.com/v1/courses/COURSE_ID/courseWork/COURSE_WORK_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_WORK_ID/rubrics/RUBRIC_ID?updateMask=criteria&key=API_KEY&previewVersion=V1_20231110_PREVIEW' \
--header 'X-Goog-Visibilities: DEVELOPER_PREVIEW' \
--header 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"criteria":"[...]"}' \
--compressed
각 HTTP 요청에 대한 API는 REST 문서에 설명되어 있습니다.
Google Apps Script
Google Apps Script에서 미리보기 API를 호출할 수 있습니다. 그러나 일반적인 Apps Script 사용과 몇 가지 차이점이 있습니다.
- 사용한 Google Cloud 프로젝트를 사용하도록 스크립트를 구성해야 합니다. 개발자 프리뷰 프로그램에 등록되어 있어야 합니다.
- 고급 서비스는 미리보기 방법을 지원하지 않으므로 HTTP를 통해 직접 요청을 보낼 수 있습니다
- 이전에서 설명한 대로 라벨과 미리보기 버전을 제공해야 합니다. HTTP 섹션.
자세히 알아보려면 해당 빠른 시작을 참조하세요. Apps Script로 들어가고 기본 프로젝트를 설정합니다. 그런 다음 미리보기 API 호출을 시작하는 방법은 다음과 같습니다.
스크립트에서 사용하는 Cloud 프로젝트 변경
프로젝트 설정에서 프로젝트 변경을 클릭하고 개발자에 등록한 모든 프로젝트의 Cloud 프로젝트 ID 미리보기 프로그램 (기본적으로 Apps Script 스크립트는 일반 프로젝트를 사용합니다. 등록된 기기만 프로젝트는 미리보기 메서드를 호출할 수 있습니다.
HTTP 요청 구성
그런 다음 다시 호출하려는 메서드의 HTTP 요청을 구성합니다. 편집자. 예를 들어 빠른 시작에서는 클래스룸이 포함된 강의를 나열하고 있습니다. 서비스는 다음과 같습니다.
function listCourses() {
try {
const response = Classroom.Courses.list();
const courses = response.courses;
if (!courses || courses.length === 0) {
console.log('No courses found.');
return;
}
for (const course of courses) {
console.log('%s (%s)', course.name, course.id);
}
} catch (err) {
// TODO: Developer to handle.
console.log(err.message);
}
}
HTTP를 직접 사용하는 동일한 작업은 다음과 같습니다.
function listCourses() {
const response = UrlFetchApp.fetch(
'https://classroom.googleapis.com/v1/courses', {
method: 'GET',
headers: {'Authorization': 'Bearer ' + ScriptApp.getOAuthToken()},
contentType: 'application/json',
});
const data = JSON.parse(response.getContentText());
if (data.error) {
// TODO: Developer to handle.
console.log(err.message);
return;
}
if (!data.courses || !data.courses.length) {
console.log('No courses found.');
return;
}
for (const course of data.courses) {
console.log('%s (%s)', course.name, course.id);
}
}
고급 서비스를 사용하는 경우 필수 OAuth 범위가 추론되지만 Apps Script에서 Google API로 직접 HTTP 호출을 하려면 적절한 범위를 수동으로 추가하세요
프로젝트 설정에서 Show 'appsscript.json'을 사용 설정합니다. 매니페스트 파일에 있는
편집기를 사용합니다. 편집기로 돌아가서 다음을 위한 appscript.json
파일에 oauthScopes
을 추가합니다.
원하는 범위를 지정할 수 있습니다 지정된 메서드의 범위는
참조하세요. 예를 들면 courses.courseWork.rubrics 목록 메서드도 볼 수 있습니다.
페이지를 참조하세요.
업데이트된 appscript.json
파일은 다음과 같습니다.
{
"timeZone": "America/Los_Angeles",
"dependencies": {
},
"exceptionLogging": "STACKDRIVER",
"runtimeVersion": "V8",
"oauthScopes": [
"https://www.googleapis.com/auth/script.external_request",
"https://www.googleapis.com/auth/classroom.coursework.students",
"https://www.googleapis.com/auth/classroom.courses",
"https://www.googleapis.com/auth/spreadsheets.readonly",
"https://www.googleapis.com/auth/spreadsheets"
]
}
라벨 제공 및 미리보기 버전
스크립트로 돌아가서 적절한 라벨을 추가했는지 확인하고 미리보기를 확인합니다. HTTP 버전(이전 HTTP 섹션에서 설명)을 따라야 합니다. LIST 호출 예 기준표 서비스는 다음과 같습니다.
function listRubrics() {
const courseId = COURSE_ID;
const courseWorkId = COURSE_WORK_ID;
const response = UrlFetchApp.fetch(
`https://classroom.googleapis.com/v1/courses/${courseId}/courseWork/${courseWorkId}/rubrics?previewVersion=V1_20231110_PREVIEW`, {
method: 'GET',
headers: {
'Authorization': 'Bearer ' + ScriptApp.getOAuthToken(),
'X-Goog-Visibilities': 'DEVELOPER_PREVIEW'
},
contentType: 'application/json',
muteHttpExceptions: true
});
const data = JSON.parse(response.getContentText());
console.log(data)
if (data.error) {
// TODO: Developer to handle.
console.log(error.message);
return;
}
if (!data.rubrics || !data.rubrics.length) {
console.log('No rubrics for this coursework!');
return;
}
console.log(data.rubrics);
}