Request Errors

请求错误

Classroom API 错误可以包含错误代码,以帮助您确定原因并正确处理错误。根据代码的不同,您可以重试请求或引导用户执行特定操作。

本页详细介绍了可能的错误代码(按 HTTP 代码分组)。如需详细了解错误消息的结构,请参阅错误消息结构

本页详细介绍了可能的错误代码(按 HTTP 代码分组)。请参阅参考文档,确定哪些方法会返回任何特定的错误代码。

HTTP 400:FAILED_PRECONDITION

如果用户由于达到限制或应用状态(如 CourseNotModifiable)而尝试执行无法允许的操作,系统将返回 FAILED_PRECONDITION。如需修复 FAILED_PRECONDITION,请指示用户执行某项操作,然后重试。或者,在某些情况下,您也可以使用备用端点代表用户修正状态。

PendingInvitationExists

PendingInvitationExists 表示已邀请某人获得课程所有权。在课程所有权转移期间,如果转移操作已经开始,但尚未获得新所有者的接受,就会出现此错误。

CourseMemberLimitReached

CourseMemberLimitReached 表示尝试执行的操作会超出允许的课程成员数量上限。此代码通常由 students.create() 返回。有关详情,请参阅邀请学生加入课程帮助中心文章中的“课程人数限制”部分。

可能执行的操作:说明失败原因,并建议用户移除不必要的课程成员

CourseNotModifiable

CourseNotModifiable 表示相关课程处于不允许修改其属性的状态(课程状态本身除外)。

可能执行的操作:提示用户将课程更改为可修改的课程状态。如需更改状态,请使用 courses.patch()。在更改其他属性的请求中,可以更改课程状态。

CourseTeacherLimitReached

CourseTeacherLimitReached 表示所请求的操作会超出允许的课程教师数量上限。此代码通常由 teachers.create() 返回。有关详情,请参阅在课程中添加助理教师这篇帮助中心文章的“课程人数限制”部分。

可能的操作:说明失败原因,并建议用户移除不必要的课程教师。如果您的应用适用上述情况,您可以使用 teachers.delete() 代表用户管理教师名单。

UserGroupsMembershipLimitReached

UserGroupsMembershipLimitReached 表示用户所包含的群组数量已达到上限,因此无法加入任何课程。此代码通常由 students.create()teachers.create() 返回。有关详情,请参阅邀请学生加入课程帮助中心文章的“课程人数限制”部分。

可能的操作:描述失败原因,并建议用户离开他们不参与的任何课程。如果用户需要参加更多课程,可以考虑创建其他帐号。如果适用于您的应用,您可以使用 students.create()teachers.delete() 代表用户管理名单。

AttachmentNotVisible

AttachmentNotVisible 表示指定的一个或多个附件对用户不可见、不属于所请求类型,或不存在。例如,未与用户共享的云端硬盘内容会返回此错误。

可能执行的操作:说明失败原因,并建议用户重新检查包含的标识符(例如云端硬盘文件 ID)。此外,请确保用户拥有查看附件的适当权限。

CannotRemoveCourseFolderOwner

CannotRemoveCourseFolderOwner 表示无法移除课程云端硬盘文件夹的所有者。

可能执行的操作:说明失败原因,并建议该用户将课程云端硬盘文件夹的所有权转移给其他用户,然后重试。

CannotRemoveCourseOwner

CannotRemoveCourseOwner 表示不得移除课程所有者。

可能执行的操作:说明失败原因,并提议不应移除课程所有者。在大多数情况下,用户会试图将自己移除,这是不允许的。

CannotRemoveCourseOwnerTransferIncomplete

CannotRemoveCourseOwnerTransferIncomplete 表示课程所有者可能无法移除,因为此课程的所有权转让仍在进行中。

可能的操作:描述失败原因,并建议用户稍等片刻,待同步类所有权的异步操作完成,然后重试。

CannotRemoveTeacherWithNoCourseOwner

CannotRemoveTeacherWithNoCourseOwner 表示教师不能从没有所有者的课程中移除。

可能执行的操作:说明失败原因,并提议教师不可能被移除。在大多数情况下,课程所有者的用户帐号已被删除,导致课程状态无效。

InactiveCourseOwner

InactiveCourseOwner 表示不允许所请求的操作,因为课程所有者的帐号已被删除。在执行请求的操作之前,课程所有者的管理员需要先恢复课程所有者的帐号。

可能的操作:说明失败原因,并建议管理员恢复课程所有者的帐号,然后重试操作。

IneligibleOwner

IneligibleOwner 表示不能将该用户添加为课程所有者,因为该用户不是助理教师。

可能的操作:描述失败的原因。如果发出请求的用户不是管理员,建议先向用户发送成为课程教师的邀请,然后再更新所有者。如果提出请求的用户是管理员,请建议他们先将用户添加为课程的助理教师。

UserCannotOwnCourse

UserCannotOwnCourse 表示不能将用户添加为课程的所有者。

可能的操作:说明失败原因,并建议不能以课程所有者用户的身份创建课程。非管理员请求用户在尝试创建课程时,如果不是自己,而是所有者,则可能会看到此错误。如果被指定为所有者的用户帐号不存在,或者用户不在他们的网域中,请求用户的管理员可能会看到此错误。

HTTP 429:RESOURCE_EXHAUSTED

如果因配额或服务器容量等资源已用尽,而导致不允许请求的操作,系统就会返回 RESOURCE_EXHAUSTED。出现这些类型的请求错误通常是因为您的应用产生的负载过多。

为避免触发这些限制并提高应用的可靠性,请使用重试机制。有效的重试机制包括:

  • 使用截断指数退避算法重试请求,并使并发环境中的请求吞吐量最大化。

  • 为避免冲突,请考虑使用带有抖动的截断指数退避算法。抖动可通过引入随机延迟来分散请求高峰,帮助您的请求更快地成功。

如果您的应用因配额限制而返回 RESOURCE_EXHAUSTED 错误,请提交增加配额。如需了解详情,请参阅监测 API 配额帮助中心文章。

UserCourseJoinRateLimitReached

UserCourseJoinRateLimitReached 表示用户每天加入的课程数量已达到允许的上限。有关详情,请参阅了解群组政策和限制这篇帮助中心文章的“群组邀请和规模”部分。

可能执行的操作:说明失败原因,并建议用户等待一天后再加入课程。

HTTP 500:INTERNAL

INTERNAL 表示处理请求时出现了意外错误。INTERNAL 请求错误通常可以通过使用指数退避算法重试请求来解决。如果 INTERNAL 错误持续存在,您可以在 Classroom API 公开问题跟踪器中提交 bug 进行报告。