IActionResult 与 IResult ASP.NET Core

Ole*_*vsv 12 .net c# asp.net-core

Microsoft.AspNetCore.Http.IResult和 和有什么区别Microsoft.AspNetCore.Mvc.IActionResult?当我要构建 API 时应该使用哪一个?我通常使用该类Results及其方法来实现此目的。

rya*_*net 14

IActionResult 与 IResult

IActionResult

IActionResult是MVC框架的一部分。它可以在库的Microsoft.AspNetCore.Mvc命名空间中找到Microsoft.AspNetCore.Mvc.Abstractions.dll。通常它用于基于 MVC 的 Web API 实现。从 ASP.NET MVC 首次启动以来,这种情况已经存在了相当长的一段时间。它存在于 .NET Framework 以及所有版本的 .NET Core / .NET 中。

Microsoft Learn:IActionResult 接口

结果

IResult是作为 .NET 6.0 的一部分引入的新 API 框架的一部分。它可以在库Microsoft.AspNetCore.Http的命名空间中找到Microsoft.AspNetCore.Http.Abstractions.dllIResult.NET 6.0+ 的新的最小 API 功能完全支持。

Microsoft Learn:IResult 接口

考虑使用内置派生类 [TypedResults 或 Results] 而不仅仅是 IResult 接口1

他们互相继承吗?

不,这些接口是完全独立的,来自不同的命名空间和库。

我什么时候应该使用其中一种而不是另一种?

这取决于情况,但一般来说,如果您正在使用基于 MVC 的 API 控制器,则应考虑使用IActionResult(或基ActionResult类,如果需要)。

如果您使用 .NET 6.0+ 编写没有 MVC 的 API,无论是使用 Minimal API 框架还是其他框架,您应该考虑使用IResult.

其他 Microsoft Learn 资源

以下是来自 Microsoft Learn 的一些优秀资源,它们提供了对 API 开发的每个领域的概述和有用的见解。

Microsoft Learn:ASP.NET Core Web API 中的控制器操作返回类型

Microsoft Learn:ASP.NET Core 基础知识概述

Microsoft Learn:教程:使用 ASP.NET Core 创建最小的 API

Microsoft Learn:教程:使用 ASP.NET Core 创建 Web API

Microsoft Learn:ASP.NET Core MVC 概述