2013-03-29 6 views
6

własne API REST Google powrócić szczegółową odpowiedź w przypadku wystąpienia błędów, np:Powracający przyczyny błędów niestandardowych HTTP w chmurze Endpoints Google

{ 
"error": { 
    "errors": [ 
    { 
"domain": "global", 
"reason": "invalidBookshelfId", 
"message": "Invalid bookshelf ID." 
    } 
    ], 
    "code": 400, 
    "message": "Invalid bookshelf ID." 
} 
} 

w chmurze Endpoints Google dla Pythona, jest to możliwe na przykład raise endpoints.BadRequestException('Error message'), ale oprócz komunikatu o błędzie chciałbym zwrócić "kod" lub "przyczynę", jak w powyższym przykładzie. Czy jest jakiś sposób, aby to osiągnąć?

Odpowiedz

1

Ten kod odpowiada kodowi statusu powiązanemu z BadRequestException. Pozostałe wyjątki to również documented, na przykład endpoints.UnauthorizedException odpowiada kodowi stanu 401. Jeśli chodzi o reason i domain, są one ustalane przez infrastrukturę API Google.

Co masz na myśli, czego nie można ustawić w message?

+1

Mogą być różne warunki błędu związane z tym samym kodem stanu HTTP. Jeśli klient API chce działać inaczej w oparciu o te warunki błędu, w jaki sposób możemy je rozróżnić? Z pewnością klient może przeanalizować wiadomość, ale wydaje się, że jest hackerem. Byłoby lepiej mieć oddzielne pola dla wiadomości i kodu/przyczyny błędu. – Docent

+0

Problem polega na tym, że komunikat wymaga ręcznego parsowania ciągu po stronie klienta, zmuszając go do utworzenia wyjątków na końcu, a następnie do obsługi lub analizowania ciągów na poziomie interfejsu API. –

Powiązane problemy