2013-03-29 21 views
6

谷歌自己的REST API的一個錯誤的情況下返回詳細響應,e.g:返回自定義HTTP錯誤的原因

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

在谷歌雲終點爲Python,有可能例如raise endpoints.BadRequestException('Error message'),但除了錯誤消息之外,我想返回「代碼」或「原因」,如上例所示。有什麼辦法可以做到這一點?

回答

1

該代碼對應於與BadRequestException關聯的狀態代碼。其他例外也是documented,例如endpoints.UnauthorizedException對應於狀態碼401。至於reasondomain,這些由Google的API基礎結構設置。

你有什麼想法,無法在message中設置?

+1

可能有不同的錯誤情況與相同的HTTP狀態碼相關聯。如果API客戶想要在這些錯誤情況下采取不同的行爲,我們如何區分它們?當然,客戶可能會解析該消息,但感覺像是一種黑客。爲消息和錯誤代碼/原因分配字段會更好。 – Docent

+0

問題是該消息需要在客戶端進行手動字符串解析,要麼迫使他在其端部創建異常,然後處理或在API級別解析字符串。 –