2013-03-29 8 views
6

Googleの独自のREST APIは例えば、エラーの場合に詳細な応答を返す:Python用Googleクラウドエンドポイントで返すカスタムHTTPエラーの理由

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

、それは例えばすることが可能ですraise endpoints.BadRequestException('Error message')ですが、エラーメッセージに加えて、私は上記の例のように "コード"または "理由"を返したいと思います。これを達成する方法はありますか?

答えて

1

コードは、BadRequestExceptionに関連付けられたステータスコードに対応しています。その他の例外はdocumentedでもあり、たとえばendpoints.UnauthorizedExceptionはステータスコード401に対応します。 reasondomainについては、GoogleのAPIインフラストラクチャによって設定されています。

messageに設定できない点は何でしたか?

+1

同じHTTPステータスコードに関連付けられたエラー条件が異なる可能性があります。 APIクライアントがこれらのエラー状態に応じて異なる行動をしたい場合、どのように区別することができますか?確かにクライアントはメッセージを解析するかもしれませんが、ハックのように感じます。メッセージとエラーコード/理由のために別々のフィールドを持つ方がよいでしょう。 – Docent

+0

問題は、メッセージがクライアントの側で手作業で文字列を解析する必要があるということです。クライアント側で例外を作成して処理したり、APIレベルで文字列を解析したりする必要があります。 –

関連する問題