例外と HTTP ステータス コード

多くの場合、一般的な HTTP ステータス コードを使用して、ユーザーの API リクエストの成功または失敗を示すことをおすすめします。たとえば、ユーザーが存在しないエンティティを取得しようとしている場合は、ID が entity_id であるエンティティが存在しないことを示す HTTP 404 ステータス コードを送信します。

一般的な HTTP ステータス コードを送信するには、エンドポイント ライブラリで提供される例外を次のように発生させることができます。

message = 'No entity with the id "%s" exists.' % entity_id
raise endpoints.NotFoundException(message)

Endpoints Frameworks で提供される例外

エンドポイント ライブラリには以下の例外があり、それぞれ特定の HTTP ステータス コードに対応しています。

例外 対応する HTTP ステータス コード
endpoints.BadRequestException HTTP 400
endpoints.UnauthorizedException HTTP 401
endpoints.ForbiddenException HTTP 403
endpoints.NotFoundException HTTP 404
endpoints.InternalServerErrorException HTTP 500

サポートされている HTTP ステータス コード

Cloud Endpoints Frameworks では、API レスポンス内で HTTP ステータス コードのサブセットがサポートされます。サポートされているコードは次の表のとおりです。

HTTP ステータス コード サポート
HTTP 2xx API メソッドから正常に返された場合、Endpoints Frameworks は通常、HTTP 200 を想定します。
API メソッドのレスポンス タイプが VoidMessage である場合、または API メソッドの戻り値が None である場合は、代わりに HTTP 204 が設定されます。
HTTP 3xx HTTP 3xx コードはサポートされません。HTTP 3xx コードを使用すると、HTTP 404 が返されます。
HTTP 4xx 次の HTTP 4xx コードのみがサポートされます。
  • 400
  • 401
  • 403
  • 404
  • 409
  • 410
  • 412
  • 413
以下を除いて、その他の HTTP 4xx コードではエラー 404 が返されます。
  • 405501 として返します
  • 408503 として返します
HTTP 5xx HTTP 5xx ステータス コードはすべて、クライアント レスポンスにおいて HTTP 503 に変換されます。

独自の例外クラスの作成

その他の HTTP ステータス コードに対応する他の例外クラスを作成するには、endpoints.ServiceException をサブクラス化します。以下のスニペットは、HTTP 409 ステータス コードを表す例外クラスの作成方法を示しています。

import endpoints
import httplib

class ConflictException(endpoints.ServiceException):
  """Conflict exception that is mapped to a 409 response."""
  http_status = httplib.CONFLICT
このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

App Engine 用 Cloud Endpoints Frameworks
ご不明な点がありましたら、Google のサポートページをご覧ください。