は、ASP.NETコアウェブAPIコントローラ方法については、以下のメソッドのシグネチャを考えてみましょう:デフォルトの設定では"JsonResult/IActionResult"または "Task <SomeObject>"またはAsp.net Core Web APIの "SomeObject"を返す違いは何ですか?
public JsonResult GetById(string id);
public async Task<SomeObject> GetById(string id);
public SomeObject GetById(string id)
を、すべてのクライアントにSomeObject
のJSON表現を返します。フレームワークはそれらを別々に扱いますか?もしそうなら、いつ使用すべきですか?
たとえば、多くのドキュメントでは、OK()
などのヘルパ関数によって生成されたIActionResult
の実装の使用を推奨しています。しかし、これらのすべてがStatusCodeに設定されているように見えますが、メソッドが返すものを難読化するという欠点があります。実際、さまざまな状況で異なるタイプを返す可能性がありますが、これはひどい考えです。ノックオン効果は、Swaggerのようなツールは、メソッドが返すものを予測できないということです。
だから私はSomeObject
を返すために好む:
- 私は重要な何かをしないのですか?、
Task<SomeObject>
を返すことの利点は何ですか - それは便利常にある、またはメソッドが非同期使用している場合にのみ電話?
編集:明確にする試み - すべてのシグネチャがクライアントにSomeObject
のJSON表現を返しますが、ビューのC#の観点から、彼らは別の戻り値の型を持っているので、MVCフレームワークは、それらを変換するために、いくつかの仕事をしています。
これはベストプラクティスであり、なぜですか? SomeObject
を返すのではなく、JsonResult
を返す理由がありますか?戻り値Task<SomeObject>
は常に使用する必要がありますか、またはアクションに非同期コードが含まれている場合は、それは貴重です(私は仮定します)。
非同期メソッドはTask'非同期'前に付加されている; ' あなたが求めている何するJsonResultとSomeObjectの違いがある何ですか? 1つはプロパティを持つオブジェクトを返します。もう一方はJson形式を返します。 – firste