ASP.Net Coreを使用してAPIを作成しています。 APIは公開されていません。私たちが開発している特定のB2B/B2Eモバイルアプリだけが使用することを意図しています。クライアントコードによって解析されるAPIからドメイン固有のエラーを伝達する方法
モバイルアプリにどのようなエラーが発生したのかを正確に伝える必要があるため、役に立つエラーメッセージが表示されます。ステータスコード自体は、アプリケーションで区別する必要のあるいくつかの異なるドメイン固有のエラーをカバーできるため、これには十分ではありません。したがって、これを行う唯一の方法は、APIとモバイルアプリプロジェクトの両方で参照される共有プロジェクトで定義された、魔法のような文字列を送信するように思われます。ここまでは順調ですね。
I最初のASP.NETのWeb API 2(ないコア)を使用し、私のコントローラはIHttpActionResult
が返され、私は単にreturn this.ResponseMessage(new HttpResponseMessage { StatusCode = myStatusCode, ReasonPhrase = myReasonPhrase })
(私は、コントローラ上の簡単なヘルパーメソッドに、この作成を委任でき、そのアクションはとてもきれいだったし、ショート)。ただし、ResponseMessageResult
はASP.Netコアで定義されていないようです。
私は以前のASP.Net Coreの経験がなく、どこにでも私のユースケースに対する答えを見つけることができないと思われるので、これについて最善の方法を知りたいと思っています。
- 特定の理由でコントローラにエラー応答を作成します。これは私が以前にやっていたことであり、かなりきれいでシンプルなようです。
- コントローラー(またはコントローラーの依存関係)に例外をスローし、例外フィルターを使用して、特定の理由フレーズのエラー応答に変換します。私が戻ってきたい理由コードとして、多くのカスタム例外を定義する必要があるかもしれないので、私はこれが好きであると確信しています。
- 上記のいずれの場合も、理由句に文字列を配置する代わりに、応答本体のオブジェクトに配置します。私の目的のために十分な理由のフレーズで魔法の文字列として見ているように見えます。おそらく
Error
プロパティを各コントローラの通常のAPIレスポンスに追加することができますが、いずれの場合も単にObjectResult
を返します。
ASP.Net Core APIからドメイン固有のエラーを伝えるには、これらの解決策、あるいはおそらく別の解決策のいずれかが賢明な方法であるとは考えられません。
クライアントコードで解析するASP.Net Core REST APIを使用して、ドメイン固有のエラーをきれいに堅牢に伝達するにはどうすればよいですか?
ありがとうございました。 「*私は文脈上のプロパティを避けるだろう(例えば、endpoint1はエラーEndMethod2がErrorMessageとErrorを返す)メンテナンスの悪夢はどんなプロパティが期待されているかを覚えている!* " - これがレスポンスオブジェクトにErrorプロパティを持つことに対する引数であるなら、私は同意しない。応答オブジェクトはAPIとクライアントの間で共有されるため、すべてが強く型付けされます。 – cmeeren
ああ、私は、既知のプロパティを持つ定義済みのErrorオブジェクトがあることを意味します。たとえば、文字列を返し、エラーのリストを返すだけでなく、エラーのリストを持つErrorsプロパティを持つ共通のオブジェクトを返すようにしてください。例えば、これは私がそれを行うことを決めた方法です。あなたとあなたのチームにはもっと意味をなさせるものがあります。それがうまくいく。 – Mardoxx
あなたの意見では、各応答オブジェクトに 'Error'プロパティ(enumなど)を付けるのは大丈夫でしょうか?たとえば、 'SignInResponse'の' SignInError Error'、 'GetTodoResponse'の' GetTodoError Error'などです。次に、実際のステータスコードに依存せずにレスポンスを逆シリアル化するだけで、クライアントコードを少し簡略化できます。 – cmeeren