extend-app-request-handling
注釈:本資料はAI技術を用いて翻訳されています。
概要
Extend Service Extension アプリは、AccelByte エコシステム内で堅牢でスケーラブルかつカスタマイズ可能なバックエンドサービスをサポートするために、gRPC と gRPC-Gateway をコア技術として活用しています。これらの技術は、API の定義、クライアント・サーバー間またはサーバー・サーバー間の通信処理、および gRPC サービスを RESTful エンドポイントとして公開するための高性能フレームワークを提供します。
gRPC リクエストがどのように処理されるかを理解することは、Extend Service Extension を開発したい開発者にとって不可欠です。
gRPC リクエスト処理
以下のガイドでは、Extend がサポートする言語のサービス定義、クライアント/サーバーのセットアップ、およびリクエスト処理ロジックについて説明します:
gRPC エラー処理
ベストプラクティスについては、以下の公式リソースを参照してください:
適切なエラー処理を確保し、クライアントに意味のあるフィードバックを提供するために、適切な場合は特定の gRPC ステータスコードを使用し、可能な限り詳細なエラーメッセージを含めることが推奨されます。
gRPC メソッドを実装する際は、エラーを適切に処理することが重要です。メソッド実装内で例外がスローされると、13 INTERNAL gRPC ステータスコード(または HTTP では 500 Internal Server Error)が返されます。
gRPC-Gateway を使用した gRPC エラー処理
Extend アプリは、特に gRPC-Gateway と組み合わせた場合、gRPC エラーを構造化された方法で表示します。これらのエラーは、RESTful クライアントとの互換性を確保するために、標準の HTTP ステータスコードにマッピングされます。
gRPC から HTTP ステータスコードへのマッピング
| gRPC コード | HTTP ステータスコード |
|---|---|
| 0 OK | 200 OK |
| 1 CANCELLED | 499 - |
| 2 UNKNOWN | 500 Internal Server Error |
| 3 INVALID_ARGUMENT | 400 Bad Request |
| 4 DEADLINE_EXCEEDED | 504 Gateway Timeout |
| 5 NOT_FOUND | 404 Not Found |
| 6 ALREADY_EXISTS | 409 Conflict |
| 7 PERMISSION_DENIED | 403 Forbidden |
| 8 RESOURCE_EXHAUSTED | 429 Too Many Requests |
| 9 FAILED_PRECONDITION | 400 Bad Request |
| 10 ABORTED | 409 Conflict |
| 11 OUT_OF_RANGE | 400 Bad Request |
| 12 UNIMPLEMENTED | 501 Not Implemented |
| 13 INTERNAL | 500 Internal Server Error |
| 14 UNAVAILABLE | 503 Service Unavailable |
| 15 DATA_LOSS | 500 Internal Server Error |
| 16 UNAUTHENTICATED | 401 Unauthorized |
完全な実装の詳細については、gRPC-Gateway の errors.go を参照してください。
500 Internal Server Error は、クライアントのリトライロジック設定に応じて、クライアントによって複数回リトライされる可能性があります。サービスを設計する際にはこれを考慮することが重要です。適切に処理されない場合、過度なリトライはパフォーマンスのボトルネックや意図しない副作用につながる可能性があります。