介尘部落

文学|音乐|休闲娱乐|计算机技术|地球科学|社会学——知识成就命运


ASP.NET Core 5.0 DotNet5 新增功能总结之有关Web项目(MVC与WebApi)的更新内容

DotNet5.0 距今发布已有月余,就在昨天2021年1月12日,又再一次发布了小版本v5.0.2的安全更新。至此,应该说已经相对稳定了,可以实施更新尝尝鲜了。今天就先来检视一遍,DotNet 5.0究竟完成了哪些更新功能。应该有不少同学已经在第一时间就尝试过了吧,还请留言提出你宝贵的心得和经验。

一、ASP.NET Core MVC 和 Razor 改进

1.新增支持通过模型绑定将日期/时间绑定到 UTC

模型绑定现在支持将 UTC 时间字符串绑定到 DateTime。 如果请求包含 UTC 时间字符串,则模型绑定会将其绑定到 UTC DateTime。 例如,以下时间字符串会绑定到 UTC DateTimehttps://example.com/mycontroller/myaction?time=2019-06-14T02%3A30%3A04.0576719Z

2.新增支持模型绑定和验证与 C# 9 记录类型一起使用

C# 9 记录类型(record)可以与 MVC 控制器或 Razor 页面中的模型绑定一起使用。 记录类型是为通过网络传输的数据建模的好方法。

例如,以下是在 PersonController 将 Person 记录类型与模型绑定一起使用:

//这是一个Person的记录类型
public record Person([Required] string Name, [Range(0, 150)] int Age);

public class PersonController
{
   public IActionResult Index() => View();

   //在控制其方法中可以直接使用记录进行模型绑定
   [HttpPost]
   public IActionResult Index(Person person)
   {
          // ...
   }
}

还可以将记录应用于窗体视图中,在窗体视图中的模型验证方法如下:

@model Person

Name: <input asp-for="Model.Name" />
<span asp-validation-for="Model.Name" />

Age: <input asp-for="Model.Age" />
<span asp-validation-for="Model.Age" />

二、WebApi方面的更新

1.默认开启了OpenAPI 规范,默认支持Api文档生成

OpenAPI 规范是一种行业标准,用于描述 HTTP API 并将其集成到复杂的业务流程中或与第三方集成。 OpenAPI 受到所有云提供程序和许多 API 注册表的广泛支持。 从 Web API 发出 OpenAPI 文档的应用具有各种可使用这些 API 的新机会。 与开放源代码项目 Swashbuckle.AspNetCore 的维护人员合作,ASP.NET Core API 模板包含对 Swashbuckle 的 NuGet 依赖关系。 Swashbuckle 是一个常用的开放源代码 NuGet 包,可动态发出 OpenAPI 文档。 Swashbuckle 通过 API 控制器进行自检并在运行时或在生成时使用 Swashbuckle CLI 生成 OpenAPI 文档来实现此目的。

在 ASP.NET Core 5.0 中,Web API 模板默认启用 OpenAPI 支持。 若要禁用默认 OpenAPI,请执行以下操作:

通过命令行方法是:

dotnet new webapi --no-openapi true

通过 Visual Studio 设置方法是:

取消选中“启用 OpenAPI 支持”。如图:

开启OpenApi支持的新项目,会有以下3个地方的变化:

1.为 Web API 项目创建的所有 .csproj 文件都包含 Swashbuckle.AspNetCore NuGet 包引用。

<ItemGroup>
    <PackageReference Include="Swashbuckle.AspNetCore" Version="5.5.1" />
</ItemGroup>

2. 模板生成的代码在 Startup.ConfigureServices 中包含用于激活 OpenAPI 文档生成的代码:

public void ConfigureServices(IServiceCollection services)
{

    services.AddControllers();
    services.AddSwaggerGen(c =>
    {
        c.SwaggerDoc("v1", new OpenApiInfo { Title = "WebApp1", Version = "v1" });
    });
}

3. 在Startup文件的Configure方法中

Startup.Configure 方法将添加 Swashbuckle 中间件,这将启用:

  • 文档生成过程。
  • 在开发模式下默认为 Swagger UI 页。

在发布到生产环境时,模板生成的代码不会意外公开 API 的说明。

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
        app.UseSwagger();
        app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json",
                         "WebApp1 v1"));
    }

    app.UseHttpsRedirection();

    app.UseRouting();

    app.UseAuthorization();

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllers();
    });
}

2. 新增有关Azure API 管理导入

ASP.NET Core API 项目启用 OpenAPI 时,Visual Studio 2019 版本 16.8 及更高版本将在发布流程中自动提供额外的步骤。 使用 Azure API 管理的开发人员有机会在发布流程中自动将 API 导入到 Azure API 管理:

Azure API 管理导入与发布

3. Web API 项目启动直接进入Swagger UI 文档界面

如果默认启用了 OpenAPI,则显著改进了 Web API 开发人员的应用启动体验 (F5)。 借助 ASP.NET Core 5.0,Web API 模板会预先配置为加载 Swagger UI 页。 Swagger UI 页提供为已发布的 API 添加的文档,并且单击一次即可测试 API。

swagger/index.html 视图

三、API 改进

1.用于 HttpRequest 和 HttpResponse 的 JSON 扩展方法

可以使用新的 ReadFromJsonAsync 和 WriteAsJsonAsync 扩展方法从 HttpRequest 和 HttpResponse 读取和写入 JSON 数据。 这些扩展方法使用 System.Text.Json 序列化程序来处理 JSON 数据。 新的 HasJsonContentType 扩展方法还可以检查请求是否具有 JSON 内容类型。

JSON 扩展方法可与终结点路由结合使用,以编程方式创建 JSON API,我们称之为“路由到代码”*_。 这是一个新选项,适用于想要以轻量级方式创建基本 JSON API 的开发人员。 例如,只有少量终结点的 Web 应用可能选择使用路由到代码,而不是 ASP.NET Core MVC 的全部功能:

阅读全文
公众号-介尘阅读时光
赞赏支持

0 Responses to “ASP.NET Core 5.0 DotNet5 新增功能总结之有关Web项目(MVC与WebApi)的更新内容”

Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)