「ApiController
は.NET Coreで非推奨になる」というのは本当ですか?新しいプロジェクトで使用することを計画しているので、尋ねます。
ASP.NET Core 2.1の更新
ASP.NET Core 2.1以降では、Web APIコントローラーを作成するための新しいタイプのセットを使用できます。 [ApiController]
属性を使用してコントローラーに注釈を付けると、自動モデル状態検証やバインディングソースパラメーターの推論などのいくつかの新機能が有効になります。詳細については、ドキュメントを参照してください: https://docs.Microsoft.com/en-us/aspnet/core/web-api/index?view=aspnetcore-2.1#annotate-class-with-apicontrollerattribute =。
MVCとWebAPIはASP.NET Coreに統合されているため、特定のApiController
クラスは実際にはありません。ただし、MVCのController
クラスには、ビューやモデルバインディングなど、Web APIのみを開発する場合におそらく必要としない機能が多数含まれています。
異なるものが必要な場合は、2つのオプションがあります。
Microsoft.AspNetCore.Mvc.Core パッケージでControllerBase
クラスを使用します。
または
ApiController
基本クラスを作成します。ここで重要なのは、現在のActionContext
インスタンスをプロパティに挿入する[ActionContext]
属性を追加することです。
[Controller]
public abstract class ApiController
{
[ActionContext]
public ActionContext ActionContext { get; set; }
}
また、クラスに[Controller]
属性を追加して、MVCコントローラー検出のコントローラーとしてマークします。
詳細については、私の 「MVC 6のWeb API」ブログ投稿 を参照してください。
[ApiController]
属性は、ASP.NET Coreバージョン2.1で実際に追加されました。
属性と組み合わされた機能は次のとおりです。
[FromBody]
、[FromRoute]
、...属性を明示的に定義する必要はもうありませんドキュメントへのリンク:
更新
また、コントローラが継承するベースクラスControllerBase
もあります。これは、ビュー関連の機能をすべて省略しているため、APIコントローラに適しています。
ASP.NETコアでは、ASP.NET MVCおよびASP.NET WepAPIで知られている用語と概念を使用しています。しかし、基本的には完全に新しいフレームワークです。したがって、単純に忘れることができるいくつかの概念または基本クラスがあります。
ASP.NET MVCとASP.NET WebApiは共存しますが、異なるフレームワークであるため、ベースクラスとしてApiController
を使用して、コントローラーをWebApiコントローラーとして指定するには明確な判断が必要です。
ASP.NET Coreでは、これはもう必要ありません。 Controller
基本クラスは、RazorビューまたはJSONからHTMLを返すアクションに使用できます(出力フォーマッターXMLおよびその他の形式も使用可能)。 Controller
基本クラスさえ必要ありません。継承なしでコントローラーとして「Plain Old C#Object」を使用することも可能です。これは、ApiControllerが存在しない場合でも、データをクライアントに配信する構造的アプローチが類似していることを示すデモコントローラーの例です。
public class DemoController : Controller
{
public async Task<IActionResult> Action()
{
var model = await _someService.GetPreciousData();
return Ok(model);
}
}
他の人が述べたように、ASP.NET Coreは古いASP.NET MVC Webstackと互換性のない完全に新しいWebstackです。これは、その名前とバージョン管理に明示的に反映されています!
ASP.NET CoreとASP.NET Core MVCにはバージョン1.0.0があり、この非互換性を明確にしています。
ASP.NET Coreは、MVCとWebApiを、呼び出された1つのApiにマージしました。
そして、あなたが探しているかもしれないものがあります:
If以前のASP.NET MVCまたはASP.NET WebApiアプリケーションから移行する場合、以前のバージョンからの移行を容易にするいくつかの互換性タイプを提供するMicrosoft.AspNetCore.Mvc.WebApiCompatShim
パッケージをインポートすることができます。 。その中には、ApiController
クラスと、新しいWebstack Apiで削除された特定の属性があります。
ただし、これは既存のアプリケーションの移行を支援するためだけのものであることに注意してください。新しいアプリケーションを作成するとき、この互換性シムを使用するのではなく、新しいものを使用する必要があります。