2017-12-04 5 views
1

私は複数のマイクロサービスを使用してプラットフォームを開発しており、エラーをフィルタリングする必要があります。エンドユーザにはどのような種類のエラーが返され、エンドユーザに表示されるエラーのフィルタリングエラー

たとえば、データベースエラーは内部的なもので、ユーザーには返されません。代わりに、ステータスコード付きの内部サーバーエラーを送信します。しかし、検証エラーはユーザーに返信することができます。

私は手動で行う方法があります。しかし、私はこれを正しい方法で設計するベストプラクティスを探しています。

P.S. Go言語とGRPCフレームワークを使用しています。

+0

もしDBとやり取りするライブラリがあり、そうでないものがあれば、そのライブラリには固有のエラーが含まれている必要があります。私はそれらをユーザーに与えるべきだと思います。 – ThatBrianDude

+3

私の経験則は、エラーが回復不能であるかエンドポイント・コールの予期される結果に影響を与えた場合、エラーが発生していることを示す必要があるということです。そのエラーの_詳細は、ユーザーが報告する(独自の追跡システムと警告システムを持っていなくても)、またはエンドポイントの使用方法を調整して補償することによって、意味のある何かを行うことができる場合にのみ、ユーザーに表示する必要があります。たとえば、ユーザーがデータを変更して補正できるため、データの競合の問題が発生します。 DBへの接続に失敗しました。 – Kaedys

答えて

0

golangを使用してgRPCでエラーが返された場合、status libraryが使用されます。 gRPCサーバーがエラーを返すと、ステータスコードとメッセージが表示されます。 FromError関数を使用すると、クライアント側でステータスコードとメッセージを取得できます。サーバー側でdbエラーが発生すると、コードInternal Code = 13でメッセージINTERNAL_SERVER_ERRORを返します。私のクライアントはコードをチェックし、ユーザーに返すメッセージを決定します。

関連する問題