浏览 ASP.NET 核心 API
ASP.NET Core 支持两种创建 API 的方法:基于控制器的方法和最小的 API。 基于控制器的 API 是生成 API 的传统方法,其中每个终结点映射到特定的控制器类。 控制器处理请求,执行任何必要的业务逻辑,并返回响应。
基于控制器的 API
基于控制器的 Web API 由派生自 ControllerBase的一个或多个控制器类组成。 下面是控制器的示例:
[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
Web API 控制器通常应派生自 ControllerBase,而不是从 Controller派生。 Controller 派生自 ControllerBase 并添加对视图的支持,因此它用于处理网页,而不是 Web API 请求。
ControllerBase 类提供了许多可用于处理 HTTP 请求的属性和方法。 例如,在以下代码示例中,CreatedAtAction 返回 201 状态代码:
[HttpPost]
[ProducesResponseType(StatusCodes.Status201Created)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
public ActionResult<Pet> Create(Pet pet)
{
pet.Id = _petsInMemoryStore.Any() ?
_petsInMemoryStore.Max(p => p.Id) + 1 : 1;
_petsInMemoryStore.Add(pet);
return CreatedAtAction(nameof(GetById), new { id = pet.Id }, pet);
}
精简 API
最小 API 是一种简化的方法,用于使用 ASP.NET Core 生成快速 HTTP API。 可以使用最少的代码和配置生成功能齐全的 REST 终结点。 通过声明 API 路由和操作,跳过传统的基架操作。 例如,以下代码在 Web 应用的根目录中创建一个 API,该 API 返回文本“Hello World!”。
var app = WebApplication.Create(args);
app.MapGet("/", () => "Hello World!");
app.Run();
大多数 API 接受参数作为路由的一部分。
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapGet("/users/{userId}/books/{bookId}",
(int userId, int bookId) => $"The user id is {userId} and book id is {bookId}");
app.Run();
最小 API 支持缩放到多个 API、处理复杂路由、应用授权规则和控制 API 响应内容所需的配置和自定义。