私がServiceA
どの呼び出しで作業しているとしましょうServiceB
。今ならばServiceB
戻りNOTFOUND、AlreadyExistsまたはInvalidArgumentエラーコードは、我々はの呼び出し元に何を返す必要がありますかServiceA
?
gRPCエラーコードのドキュメントに基づくと、次のInternal
場合に返すべきもののようです。
基礎となるシステムによって期待される不変条件が壊れています
この太字のテキストが何を意味するのかよくわかりませんが、ダウンストリームエラーをInternal
エラーコードとして返す必要があるという意味ですか?
たとえば、NotFound
ドキュメントには次のように書かれています。
NotFoundは、要求されたエンティティ(ファイルやディレクトリなど)が見つからなかったことを意味します
それは、ダウンストリームエラーを解析し、ifが返された場合NotFound
の呼び出し元に戻る必要があることを意味しますか?ServiceA
ServiceB
NotFound
エンドポイントに返すステータスコードServiceA
は、発信者にとって意味のあるものである必要があります。ビジネスロジックは、ダウンストリームエラーに対して返されるステータスコードを指示する必要があります。ダウンストリームサービスのコードを返すことは理にかなっているかもしれませんが、常にではありません。
からおよびからgetUserDetails
呼び出すエンドポイントを実装する場合を考えてみます。getUser
UserService
getRatings
RatingService
getUser
返す場合、ユーザーが存在しないため、NotFoundを呼び出し元にも返すことは理にかなっています。getRatings
返す場合、完全な応答を返すのに十分な情報がないため、内部エラーを返すことができます。この場合、NotFoundを返すと、クライアントはユーザーが見つからなかったと見なす可能性がありますが、そうではありません。この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加