Indeks
BadRequest(komunikat)BadRequest.FieldViolation(komunikat)Code(wyliczenie)ErrorInfo(komunikat)Help(komunikat)Help.Link(komunikat)LocalizedMessage(komunikat)RequestInfo(komunikat)Status(komunikat)
BadRequest
Opisuje naruszenia w żądaniu klienta. Ten typ błędu dotyczy aspektów składniowych żądania.
| Pola | |
|---|---|
field_violations[] |
Opisuje wszystkie naruszenia w żądaniu klienta. |
FieldViolation
Typ wiadomości używany do opisywania pojedynczego pola nieprawidłowego żądania.
| Pola | |
|---|---|
field |
Ścieżka prowadząca do pola w treści żądania. Wartość będzie ciągiem identyfikatorów oddzielonych kropkami, które identyfikują pole bufora protokołu. Weź pod uwagę następujące kwestie: W tym przykładzie w protokole
W formacie JSON te same wartości są reprezentowane w ten sposób:
|
description |
Opis, dlaczego element żądania jest nieprawidłowy. |
reason |
Przyczyna błędu na poziomie pola. Jest to stała wartość, która określa bezpośrednią przyczynę błędu na poziomie pola. Powinien on jednoznacznie identyfikować typ naruszenia pola w zakresie google.rpc.ErrorInfo.domain. Powinien mieć maksymalnie 63 znaki i pasować do wyrażenia regularnego |
localized_message |
Zawiera zlokalizowany komunikat o błędzie na poziomie pola, który można bezpiecznie zwrócić do klienta interfejsu API. |
Kod
Kanoniczne kody błędów interfejsów API gRPC.
Czasami może obowiązywać kilka kodów błędów. Usługi powinny zwracać najbardziej szczegółowy kod błędu, który ma zastosowanie. Jeśli na przykład oba kody mają zastosowanie, preferuj OUT_OF_RANGE zamiast FAILED_PRECONDITION. Podobnie preferuj NOT_FOUND lub ALREADY_EXISTS zamiast FAILED_PRECONDITION.
| Wartości w polu enum | |
|---|---|
OK |
Nie jest to błąd. Zwracany w przypadku powodzenia. Mapowanie HTTP: 200 OK |
CANCELLED |
Operacja została anulowana, zwykle przez element wywołujący. Mapowanie HTTP: 499 Klient zamknął żądanie |
UNKNOWN |
Nieznany błąd. Na przykład ten błąd może być zwracany, gdy wartość Mapowanie HTTP: 500 Internal Server Error |
INVALID_ARGUMENT |
Klient podał nieprawidłowy argument. Pamiętaj, że różni się on od Mapowanie HTTP: 400 Nieprawidłowe żądanie |
DEADLINE_EXCEEDED |
Termin upłynął przed wykonaniem operacji. W przypadku operacji, które zmieniają stan systemu, ten błąd może zostać zwrócony nawet wówczas, gdy operacja zakończyła się pomyślnie. Na przykład pomyślna odpowiedź serwera mogła być tak opóźniona, że termin upłynął. Mapowanie HTTP: 504 Przekroczony czas bramy |
NOT_FOUND |
Nie znaleziono żądanego elementu (np. pliku lub katalogu). Uwaga dla programistów serwerów: jeśli żądanie zostanie odrzucone w przypadku całej klasy użytkowników, np. w ramach stopniowego wdrażania funkcji lub nieudokumentowanej listy dozwolonych, można użyć kodu Mapowanie HTTP: 404 Nie znaleziono |
ALREADY_EXISTS |
Encja, którą próbował utworzyć klient (np. plik lub katalog), już istnieje. Mapowanie HTTP: 409 Konflikt |
PERMISSION_DENIED |
Element wywołujący nie ma uprawnień do wykonania określonej operacji. Kodu Mapowanie HTTP: 403 Dostęp zabroniony |
UNAUTHENTICATED |
Żądanie nie ma prawidłowych danych uwierzytelniających dla tej operacji. Mapowanie HTTP: 401 Unauthorized |
RESOURCE_EXHAUSTED |
Jeden z zasobów został wyczerpany, być może limit na użytkownika lub cała pamięć systemu plików. Mapowanie HTTP: 429 Zbyt wiele żądań |
FAILED_PRECONDITION |
Operacja została odrzucona, ponieważ system nie znajduje się w stanie wymaganym do jej wykonania. Na przykład katalog do usunięcia nie jest pusty, operacja rmdir jest stosowana do elementu, który nie jest katalogiem itp. Osoby wdrażające usługę mogą skorzystać z tych wytycznych, aby zdecydować, czy użyć Mapowanie HTTP: 400 Nieprawidłowe żądanie |
ABORTED |
Operacja została przerwana, najczęściej z powodu problemu równoczesności, np. w przypadku nieudanej kontroli sekwencera lub przerwanej transakcji. Wskazówki powyżej pomogą Ci zdecydować, czy użyć Mapowanie HTTP: 409 Konflikt |
OUT_OF_RANGE |
Operacja została podjęta poza prawidłowym zakresem. np. próba odczytania danych po osiągnięciu końca pliku. W przeciwieństwie do błędu Między Mapowanie HTTP: 400 Nieprawidłowe żądanie |
UNIMPLEMENTED |
Operacja nie jest wdrożona lub nie jest obsługiwana/włączona w tej usłudze. Mapowanie HTTP: 501 Nie zaimplementowano |
INTERNAL |
Błędy wewnętrzne. Oznacza to, że pewne niezmienniki oczekiwane przez system bazowy zostały uszkodzone. Ten kod błędu jest zarezerwowany dla poważnych błędów. Mapowanie HTTP: 500 Internal Server Error |
UNAVAILABLE |
Usługa jest obecnie niedostępna. Jest to najczęściej stan przejściowy, który można rozwiązać, ponawiając próbę z wycofywaniem. Pamiętaj, że ponawianie operacji nieidempotentnych nie zawsze jest bezpieczne. Wskazówki powyżej pomogą Ci zdecydować, czy użyć Mapowanie HTTP: 503 Usługa niedostępna |
DATA_LOSS |
Nieodwracalna utrata lub uszkodzenie danych. Mapowanie HTTP: 500 Internal Server Error |
ErrorInfo
Opisuje przyczynę błędu ze szczegółami strukturalnymi.
Przykład błędu podczas kontaktowania się z interfejsem API „pubsub.googleapis.com”, gdy nie jest on włączony:
{ "reason": "API_DISABLED"
"domain": "googleapis.com"
"metadata": {
"resource": "projects/123",
"service": "pubsub.googleapis.com"
}
}
Ta odpowiedź oznacza, że interfejs pubsub.googleapis.com API nie jest włączony.
Przykład błędu zwracanego podczas próby utworzenia instancji Spannera w regionie, w którym nie ma dostępnych zasobów:
{ "reason": "STOCKOUT"
"domain": "spanner.googleapis.com",
"metadata": {
"availableRegions": "us-central1,us-east2"
}
}
| Pola | |
|---|---|
reason |
Przyczyna błędu. Jest to stała wartość, która określa bezpośrednią przyczynę błędu. Przyczyny błędów są unikalne w ramach określonej domeny błędów. Powinien mieć maksymalnie 63 znaki i pasować do wyrażenia regularnego |
domain |
Grupa logiczna, do której należy „przyczyna”. Domena błędu to zwykle zarejestrowana nazwa usługi narzędzia lub produktu, który generuje błąd. Przykład: „pubsub.googleapis.com”. Jeśli błąd jest generowany przez jakąś wspólną infrastrukturę, domena błędu musi być globalnie unikalną wartością, która identyfikuje tę infrastrukturę. W przypadku infrastruktury interfejsu API Google domena błędu to „googleapis.com”. |
metadata |
Dodatkowe szczegóły strukturalne dotyczące tego błędu. Klucze muszą być zgodne z wyrażeniem regularnym |
Pomoc
Zawiera linki do dokumentacji lub umożliwia wykonanie działania poza pasmem.
Jeśli na przykład weryfikacja limitu nie powiodła się z powodu błędu wskazującego, że projekt wywołujący nie ma włączonej usługi, do której uzyskuje dostęp, może to zawierać adres URL prowadzący bezpośrednio do odpowiedniego miejsca w konsoli dewelopera, w którym można włączyć tę usługę.
| Pola | |
|---|---|
links[] |
Adresy URL wskazujące dodatkowe informacje o obsłudze bieżącego błędu. |
Link
Opisuje link URL.
| Pola | |
|---|---|
description |
Opisuje, co oferuje link. |
url |
Adres URL linku. |
LocalizedMessage
Zawiera zlokalizowany komunikat o błędzie, który można bezpiecznie zwrócić użytkownikowi i dołączyć do błędu RPC.
| Pola | |
|---|---|
locale |
Używane ustawienia regionalne zgodnie ze specyfikacją określoną na stronie https://www.rfc-editor.org/rfc/bcp/bcp47.txt. Przykłady: „en-US”, „fr-CH”, „es-MX”. |
message |
Zlokalizowany komunikat o błędzie w podanym języku. |
RequestInfo
Zawiera metadane dotyczące żądania, które klienci mogą dołączyć podczas zgłaszania błędu lub przesyłania innych form opinii.
| Pola | |
|---|---|
request_id |
Nieprzejrzysty ciąg znaków, który powinien być interpretowany tylko przez usługę, która go generuje. Może on na przykład służyć do identyfikowania żądań w dziennikach usługi. |
serving_data |
Wszelkie dane użyte do obsługi tego żądania. Na przykład zaszyfrowany ślad stosu, który można odesłać do dostawcy usług w celu debugowania. |
Stan
Typ Status definiuje model błędu logicznego, który jest odpowiedni dla różnych środowisk programistycznych, w tym interfejsów API typu REST i RPC. Jest używany przez gRPC. Każdy komunikat Status zawiera 3 rodzaje danych: kod błędu, komunikat o błędzie i szczegóły błędu.
Więcej informacji o tym modelu błędów i sposobie pracy z nim znajdziesz w przewodniku API Design Guide.
| Pola | |
|---|---|
code |
Kod stanu, który powinien być wartością wyliczeniową |
message |
Komunikat o błędzie widoczny dla programisty, który powinien być w języku angielskim. Wszelkie komunikaty o błędach dla użytkowników powinny być zlokalizowane i wysyłane w polu |
details[] |
Lista wiadomości zawierających szczegóły błędu. Na potrzeby interfejsów API dostępny jest wspólny zestaw typów wiadomości. |