ASP.NET Core 中的最少 API 或控制器

发布:2024-10-14 16:23 阅读:55 点赞:0

介绍

.NET 在过去 5 到 6 年中发生了重大变化。现在,构建 MVC 或 API(应用程序编程接口)等应用程序比以往任何时候都更容易。ASP.NET Core 6 引入了“最小 API”功能,该功能通过消除创建控制器(传统上位于 API 前端)的需要来简化 API 开发。现在,.NET 支持两种方法:控制器(旧方法)和最小 API(新方法)。但是您应该使用哪一种呢?

什么是最小 API?

最小 API 使用 lambda 或方法将端点定义为逻辑处理程序。它们利用方法注入服务,而控制器使用构造函数或属性注入。在最小 API 中,每个端点只需要它所需的特定服务。这与控制器形成对比,控制器中的所有端点都使用相同的类构造函数,这会使控制器在增长时变得“臃肿”。最小 API 旨在默认隐藏主机类,并通过采用 lambda 表达式的扩展方法来强调配置和可扩展性。

这是最小 API 的一个例子。

app.MapGet("/weatherforecast", (HttpContext httpContext) =>
{
    var forecast = Enumerable.Range(1, 5).Select(index =>
        new WeatherForecast
        {
            Date = DateOnly.FromDateTime(DateTime.Now.AddDays(index)),
            TemperatureC = Random.Shared.Next(-20, 55),
            Summary = summaries[Random.Shared.Next(summaries.Length)]
        })
        .ToArray();

    return forecast;
});

以下是我们在了解最小 API 之前应该了解的重要点。这些要点来自 Microsoft 文档。

最小 API 缺乏对以下方面的内置支持:

  • 模型绑定(IModelBinderProvider、IModelBinder)。但是,可以通过自定义绑定垫片添加支持。
  • 验证(IModelValidator)。
  • 应用程序部件或应用程序模型。没有办法应用或构建您的约定。
  • 查看渲染。为此,建议使用 Razor Pages。
  • JsonPatch。
  • OData。

您可以通过针对每个缺失的功能实施自定义解决方案来解决这些限制。

结论

最小 API 是开始构建 API 的绝佳方式。最小 API 的一个实际用例是垂直切片架构(垂直切片架构是一种设计方法,其中功能以端到端的方式实现,将所有层(UI、业务逻辑和数据访问)封装在独立的切片中。)。在这种方法中,您可以为每个模块单独定义端点,从而简化管理。由于最小 API 中的每个端点都声明了所需的特定服务,因此这种方法有助于避免控制器类随着增长和添加更多端点而变得“臃肿”的问题。

对我来说,最少的 API 适用于小规模项目,并且当端点增长时它们很容易处理。