浏览 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 响应内容所需的配置和自定义。