ダウンストリームエラーコードをgRPCエラーコードに変換するための正しい規則は何ですか?

Akash Agarwal

私がServiceAどの呼び出しで作業しているとしましょうServiceB今ならばServiceB戻りNOTFOUND、AlreadyExistsまたはInvalidArgumentエラーコードは、我々はの呼び出し元に何を返す必要がありますかServiceA

  1. gRPCエラーコードのドキュメント基づくと、次のInternal場合に返すべきもののようです。

    基礎となるシステムによって期待される不変条件が壊れています

    この太字のテキストが何を意味するのかよくわかりませんが、ダウンストリームエラーをInternalエラーコードとして返す必要があるという意味ですか?

  2. たとえば、NotFoundドキュメントには次のように書かれています。

    NotFoundは、要求されたエンティティ(ファイルやディレクトリなど)が見つからなかったことを意味します

    それは、ダウンストリームエラーを解析し、ifが返された場合NotFoundの呼び出し元に戻る必要があることを意味しますか?ServiceAServiceBNotFound

Akash Agarwal

エンドポイントに返すステータスコードServiceAは、発信者にとって意味のあるものである必要がありますビジネスロジックは、ダウンストリームエラーに対して返されるステータスコードを指示する必要があります。ダウンストリームサービスのコードを返すことは理にかなっているかもしれませんが、常にではありません。

からおよびからgetUserDetails呼び出すエンドポイントを実装する場合を考えてみますgetUserUserServicegetRatingsRatingService

  1. NotFoundをgetUser返す場合、ユーザーが存在しないため、NotFoundを呼び出し元にも返すことは理にかなっています。
  2. NotFoundをgetRatings返す場合、完全な応答を返すのに十分な情報がないため内部エラーを返すことができます。この場合、NotFoundを返す、クライアントはユーザーが見つからなかったと見なす可能性がありますが、そうではありません。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

なぜ一般的なJava Base64でエンコードするライブラリは、エンコーディングのためOutputStreamsと、入力ストリームをエンコードするために使うのですか?

分類Dev

MySQLテーブルデータをcsvにダンプし、文字エンコードを変換するための最良の方法は何ですか?

分類Dev

リストをコンストラクターに渡して保存するための規則は何ですか?

分類Dev

リストをコンストラクターに渡して保存するための規則は何ですか?

分類Dev

カウンターをバイトにエンコードするための可能な方法は何ですか?

分類Dev

Symfony4でコントローラーのフロントエンドとバックエンドを配置する正しい方法は何ですか

分類Dev

C ++スーパークラスコンストラクターで、サブクラスがオーバーライドする多くの変数に依存するコードを実行する正しい方法は何ですか?

分類Dev

固定リストからランダムなエントリを表示するためのハードコードされたPHP配列とMySQLテーブル

分類Dev

ドキュメントを変更する(変換、マージなど)ためにAdobe Acrobat(リーダーではない)で使用できるコマンドラインオプションは何ですか?

分類Dev

アイテムの大規模なリストを使用してサーバーの応答を調査するためのフロントエンド/バックエンドのグッドプラクティスは何ですか?

分類Dev

コードフェンスのマークダウンにクラスを追加する正しい方法は何ですか

分類Dev

C ++でコンストラクターをオーバーロードするための適切でエレガントな方法は何ですか

分類Dev

サーバーレスラムダでHTTPエラーコードを返す正しい方法は何ですか

分類Dev

複雑なネストされたSQLアソシエーションを管理可能なサービスに変換するためのフロントエンドデータモデリングのベストプラクティスは何ですか?

分類Dev

フィールドの1つが複数選択されている場合、htmlフォームをレストコントローラーのajaxリクエストに変換するにはどうすればよいですか?

分類Dev

PHP変数を使用するJavaScriptアラートをPHPエコーするための正しい形式は何ですか?

分類Dev

初めてdoomemacsをダウンロードしたとき、doomdoctorコマンドでエラーが発生しました。私は何をすべきか?

分類Dev

このコードは、すべての単語のすべての文字を大文字に変換することになっています。ただし、コードを実行するとバスエラーが発生します。バスエラーの原因は何ですか?

分類Dev

リクエストの解析が失敗した場合の正しいHTTPエラーコードは何ですか

分類Dev

最新のFirefoxインストーラーをダウンロードする新しいWindows10で、プロンプトを入力するための最短の非対話型コマンドは何ですか?

分類Dev

エラー関数からコマンドのクールダウンをリセットするにはどうすればよいですか?

分類Dev

Windowsエクスプローラーのオートコンプリート/ドロップダウンリストからエントリを削除するにはどうすればよいですか?

分類Dev

(Vimエディターで開いた)ファイルからコンテンツをコピーしてFirefoxブラウザーのアドレスバーに貼り付けるVimコマンドとは何ですか?

分類Dev

符号なし整数のリストをオーディオファイルに変換するために使用するffmpegコマンドは何ですか?

分類Dev

複数行のPowerShellスクリプトをエンコードされたコマンドに変換するためのプログラムはありますか?

分類Dev

「viモード」でBashを使用しています。外部エディターを使用して現在のコマンドラインを編集するためのホットキーシーケンスは何ですか?

分類Dev

ESAPIエンコーダーは、クエリパラメーターの変更を正規化します

分類Dev

レンダリングされたHTTPと一緒にJavascriptコードをクライアントに送信する正しい方法は何ですか?

分類Dev

リクエストや他のPythonライブラリでウェブページページをダウンロードする代わりに、リダイレクトステータスコードのみをたどってリダイレクトリンクを取得することは可能ですか?

Related 関連記事

  1. 1

    なぜ一般的なJava Base64でエンコードするライブラリは、エンコーディングのためOutputStreamsと、入力ストリームをエンコードするために使うのですか?

  2. 2

    MySQLテーブルデータをcsvにダンプし、文字エンコードを変換するための最良の方法は何ですか?

  3. 3

    リストをコンストラクターに渡して保存するための規則は何ですか?

  4. 4

    リストをコンストラクターに渡して保存するための規則は何ですか?

  5. 5

    カウンターをバイトにエンコードするための可能な方法は何ですか?

  6. 6

    Symfony4でコントローラーのフロントエンドとバックエンドを配置する正しい方法は何ですか

  7. 7

    C ++スーパークラスコンストラクターで、サブクラスがオーバーライドする多くの変数に依存するコードを実行する正しい方法は何ですか?

  8. 8

    固定リストからランダムなエントリを表示するためのハードコードされたPHP配列とMySQLテーブル

  9. 9

    ドキュメントを変更する(変換、マージなど)ためにAdobe Acrobat(リーダーではない)で使用できるコマンドラインオプションは何ですか?

  10. 10

    アイテムの大規模なリストを使用してサーバーの応答を調査するためのフロントエンド/バックエンドのグッドプラクティスは何ですか?

  11. 11

    コードフェンスのマークダウンにクラスを追加する正しい方法は何ですか

  12. 12

    C ++でコンストラクターをオーバーロードするための適切でエレガントな方法は何ですか

  13. 13

    サーバーレスラムダでHTTPエラーコードを返す正しい方法は何ですか

  14. 14

    複雑なネストされたSQLアソシエーションを管理可能なサービスに変換するためのフロントエンドデータモデリングのベストプラクティスは何ですか?

  15. 15

    フィールドの1つが複数選択されている場合、htmlフォームをレストコントローラーのajaxリクエストに変換するにはどうすればよいですか?

  16. 16

    PHP変数を使用するJavaScriptアラートをPHPエコーするための正しい形式は何ですか?

  17. 17

    初めてdoomemacsをダウンロードしたとき、doomdoctorコマンドでエラーが発生しました。私は何をすべきか?

  18. 18

    このコードは、すべての単語のすべての文字を大文字に変換することになっています。ただし、コードを実行するとバスエラーが発生します。バスエラーの原因は何ですか?

  19. 19

    リクエストの解析が失敗した場合の正しいHTTPエラーコードは何ですか

  20. 20

    最新のFirefoxインストーラーをダウンロードする新しいWindows10で、プロンプトを入力するための最短の非対話型コマンドは何ですか?

  21. 21

    エラー関数からコマンドのクールダウンをリセットするにはどうすればよいですか?

  22. 22

    Windowsエクスプローラーのオートコンプリート/ドロップダウンリストからエントリを削除するにはどうすればよいですか?

  23. 23

    (Vimエディターで開いた)ファイルからコンテンツをコピーしてFirefoxブラウザーのアドレスバーに貼り付けるVimコマンドとは何ですか?

  24. 24

    符号なし整数のリストをオーディオファイルに変換するために使用するffmpegコマンドは何ですか?

  25. 25

    複数行のPowerShellスクリプトをエンコードされたコマンドに変換するためのプログラムはありますか?

  26. 26

    「viモード」でBashを使用しています。外部エディターを使用して現在のコマンドラインを編集するためのホットキーシーケンスは何ですか?

  27. 27

    ESAPIエンコーダーは、クエリパラメーターの変更を正規化します

  28. 28

    レンダリングされたHTTPと一緒にJavascriptコードをクライアントに送信する正しい方法は何ですか?

  29. 29

    リクエストや他のPythonライブラリでウェブページページをダウンロードする代わりに、リダイレクトステータスコードのみをたどってリダイレクトリンクを取得することは可能ですか?

ホットタグ

アーカイブ