Błędy żądań
Błąd interfejsu API Classroom może zawierać kod błędu, który pomoże Ci zidentyfikować przyczynę i odpowiednio zająć się błędem. W zależności od kodu możesz ponownie wysłać prośbę lub poprosić użytkowników o wykonanie określonych działań.
Na tej stronie znajdziesz szczegółowe informacje o możliwych kodach błędów pogrupowanych według kodu HTTP. Więcej informacji o strukturze komunikatu o błędzie znajdziesz w artykule Struktura komunikatu o błędzie.
Na tej stronie znajdziesz szczegółowe informacje o możliwych kodach błędów pogrupowanych według kodu HTTP. Aby dowiedzieć się, które metody zwracają dany kod błędu, zapoznaj się z dokumentacją referencyjną.
HTTP 400: FAILED_PRECONDITION
Wartość FAILED_PRECONDITION
jest zwracana, gdy użytkownik podejmuje działanie, które nie może zostać dozwolone, ponieważ osiągnął limit lub stan aplikacji, np. CourseNotModifiable
. Aby rozwiązać problem z FAILED_PRECONDITION
, poproś użytkownika o wykonanie pewnych czynności, a następnie spróbuj ponownie. W niektórych przypadkach możesz użyć alternatywnych punktów końcowych, aby poprawić stan w imieniu użytkownika.
PendingInvitationExists
PendingInvitationExists
oznacza, że ktoś został już zaproszony do przejęcia własności kursu. Ten błąd występuje podczas przenoszenia własności zajęć, gdy przeniesienie zostało już rozpoczęte, ale nowy właściciel go jeszcze nie zaakceptował.
CourseMemberLimitReached
CourseMemberLimitReached
oznacza, że próba wykonania danej czynności spowoduje przekroczenie maksymalnej liczby uczestników kursu. Ten kod jest zwykle zwracany przez students.create()
. Więcej informacji znajdziesz w sekcji „Ograniczenia liczby uczniów na zajęciach” w artykule Zapraszanie uczniów na zajęcia w Centrum pomocy.
Możliwe działanie: opisz przyczynę błędu i zasugeruj użytkownikowi usunięcie zbędnych uczestników kursu.
CourseNotModifiable
CourseNotModifiable
oznacza, że dany kurs jest w stanie, który uniemożliwia modyfikowanie jego właściwości (z wyjątkiem samego stanu kursu).
Możliwa akcja: poproś użytkownika o zmianę zajęć na stan zajęć, który można zmienić. Aby zmienić stan, użyj courses.patch()
. Stan kursu można zmienić w żądaniu, które zmienia inne właściwości.
CourseTeacherLimitReached
CourseTeacherLimitReached
oznacza, że wykonanie żądanego działania spowoduje przekroczenie maksymalnej dozwolonej liczby nauczycieli kursu. Ten kod jest zwykle zwracany przez metodę teachers.create()
. Więcej informacji znajdziesz w sekcji „Ograniczenia dotyczące liczby uczniów” w artykule Dodawanie nauczyciela współprowadzącego do zajęć w Centrum pomocy.
Możliwe działanie: opisz przyczynę błędu i zasugeruj użytkownikowi usunięcie zbędnych nauczycieli kursu. Jeśli Twoja aplikacja spełnia te wymagania, możesz użyć metody teachers.delete()
, aby zarządzać listami nauczycieli w imieniu użytkownika.
CourseTopicLimitReached
CourseTopicLimitReached
oznacza, że wykonanie tej czynności spowoduje przekroczenie maksymalnej dozwolonej liczby tematów w kursie. Ten kod jest zwykle zwracany przez metodę courses.topics.create()
.
Możliwe działanie: opisz przyczynę błędu i sugeruj, aby użytkownik usunął niepotrzebne tematy. Jeśli dotyczy to Twojej aplikacji, możesz zarządzać tematami w imieniu użytkownika, korzystając z metody courses.topics.delete()
.
UserGroupsMembershipLimitReached
UserGroupsMembershipLimitReached
oznacza, że użytkownik jest już członkiem maksymalnej liczby grup i nie może dołączyć do żadnych zajęć. Ten kod jest zwykle zwracany przez students.create()
lub teachers.create()
. Więcej informacji znajdziesz w sekcji „Ograniczenia dotyczące liczby uczniów” w artykule Zapraszanie uczniów na zajęcia w Centrum pomocy.
Możliwe działanie: opisz przyczynę błędu i zasugeruj użytkownikowi, aby opuścił zajęcia, w których nie bierze udziału. Jeśli użytkownik chce uczestniczyć w większej liczbie kursów, może utworzyć dodatkowe konto. Jeśli dotyczy to Twojej aplikacji, możesz użyć funkcji students.create()
lub teachers.delete()
, aby zarządzać listami w imieniu użytkownika.
AttachmentNotVisible
AttachmentNotVisible
oznacza, że co najmniej 1 wybrany załącznik jest niewidoczny dla użytkownika, nie jest żądanego typu lub nie istnieje. Ten błąd może wystąpić na przykład w przypadku elementów na Dysku, które nie zostały udostępnione użytkownikowi.
Możliwe działanie: opisz przyczynę niepowodzenia i sugeruj, aby użytkownik ponownie sprawdził identyfikatory, np. identyfikatory plików na Dysku, które zostały uwzględnione. Upewnij się też, że użytkownik ma odpowiednie uprawnienia do wyświetlania załącznika.
CannotRemoveCourseFolderOwner
CannotRemoveCourseFolderOwner
Wskazuje, że właściciel folderu na Dysku nie może zostać usunięty.
Możliwe działanie: opisz przyczynę błędu i zasugeruj użytkownikowi, aby przeniósł własność folderu na Dysku kursu na innego użytkownika i spróbował ponownie.
CannotRemoveCourseOwner
CannotRemoveCourseOwner
oznacza, że właściciela kursu nie można usunąć.
Możliwe działanie: opisz przyczynę niepowodzenia i zasugeruj, że właściciela kursu nie można usunąć. W większości przypadków użytkownik próbuje usunąć siebie, co jest niedozwolone.
CannotRemoveCourseOwnerTransferIncomplete
CannotRemoveCourseOwnerTransferIncomplete
oznacza, że właściciela zajęć nie można usunąć, ponieważ przenoszenie własności tych zajęć jest nadal w toku.
Możliwe działanie: opisz przyczynę błędu i zasugeruj, aby użytkownik zaczekał kilka chwil, aż asynchroniczne działanie polegające na przeniesieniu własności zajęć zostanie zakończone, a następnie spróbuj ponownie.
CannotRemoveTeacherWithNoCourseOwner
CannotRemoveTeacherWithNoCourseOwner
oznacza, że nauczyciela nie można usunąć z zajęć, które nie mają właściciela.
Możliwa czynność: opisz przyczynę niepowodzenia i zasugeruj, że nauczyciel może nie zostać usunięty. W większości przypadków konto użytkownika, który jest właścicielem kursu, zostało usunięte, co spowodowało nieprawidłowy stan kursu.
InactiveCourseOwner
InactiveCourseOwner
oznacza, że żądane działanie jest niedozwolone, ponieważ konto właściciela kursu zostało usunięte. Zanim wykonasz wymagane działanie, administrator konta właściciela kursu musi przywrócić jego konto.
Możliwe działanie: opisz przyczynę błędu i zasugeruj administratorowi, aby przywrócił konto właściciela kursu, zanim ponownie spróbuje wykonać tę operację.
IneligibleOwner
IneligibleOwner
oznacza, że użytkownika nie można dodać jako właściciela kursu, ponieważ nie jest on współwykładowcą.
Możliwe działanie: opisz przyczynę niepowodzenia. Jeśli użytkownik przesyłający prośbę nie jest administratorem, przed zmianą właściciela zachęć go do wysłania zaproszenia do zostania nauczycielem w kursie. Jeśli użytkownik, który wysłał prośbę, jest administratorem, zasugeruj mu, aby najpierw dodał użytkownika jako nauczyciela dodatkowego zajęć.
UserCannotOwnCourse
UserCannotOwnCourse
oznacza, że użytkownika nie można dodać jako właściciela kursu.
Możliwe działanie: opisz przyczynę błędu i zasugeruj, że nie można utworzyć zajęć z użytkownikiem jako właścicielem. Użytkownik niebędący administratorem może zobaczyć ten błąd, jeśli spróbuje utworzyć kurs, którego właścicielem jest inny użytkownik. Administrator może zobaczyć ten błąd, jeśli konto użytkownika wskazane jako właściciel nie istnieje lub nie znajduje się w jego domenie.
HTTP 429: RESOURCE_EXHAUSTED
Wartość RESOURCE_EXHAUSTED
jest zwracana, gdy żądane działanie jest niedozwolone z powodu wyczerpania zasobu, np. limitu lub pojemności serwera. Tego typu błędy żądania występują zwykle, gdy aplikacja generuje zbyt duże obciążenie.
Aby uniknąć przekroczenia tych limitów i zwiększyć niezawodność aplikacji, użyj mechanizmów ponownych prób. Prawidłowe mechanizmy ponownego próby:
Użyj skróconego czasu do ponowienia, aby ponownie przesłać żądanie i maksymalizować przepustowość żądań w środowiskach równoczesnych.
Aby uniknąć kolizji, rozważ użycie skróconego wygaszania wykładniczego z szumem. Wprowadzenie jittera może pomóc w szybszym przesyłaniu żądań dzięki losowemu opóźnieniu, które rozkłada żądania na krótsze odstępy.
Jeśli aplikacja zwraca błędy RESOURCE_EXHAUSTED
z powodu ograniczeń dotyczących limitu, prześlij prośbę o zwiększenie limitu. Więcej informacji znajdziesz w artykule Limity interfejsu Monitor API w Centrum pomocy.
UserCourseJoinRateLimitReached
UserCourseJoinRateLimitReached
oznacza, że użytkownik dołączył już do maksymalnej liczby zajęć w ciągu jednego dnia. Więcej informacji znajdziesz w sekcji „Zaproszenia do grup i ich rozmiar” w artykule Omówienie zasad i ograniczeń obowiązujących w Grupach dyskusyjnych w Centrum pomocy.
Możliwe działanie: opisz przyczynę błędu i zaleć użytkownikowi, aby zaczekał jeden dzień, zanim dołączy do zajęć.
HTTP 500: INTERNAL
INTERNAL
oznacza, że podczas przetwarzania żądania wystąpił nieoczekiwany błąd. Błędy żądań INTERNAL
można też często rozwiązać, ponownie wysyłając żądanie z użyciem algorytmu Exponential back-off. Jeśli błąd INTERNAL
będzie się powtarzał, możesz go zgłosić, przesyłając raport o błędzie w publicznym narzędziu do zgłaszania problemów z interfejsem Classroom API.