越众做的绿色建筑的网站,质监站网址,建德网站设计公司,集团公司网站推广方案怎么做ASP.NET Core 6 Minimal APIIntro微软在 ASP.NET 6 Preview 4 的介绍文章中介绍了即将到来的 ASP.NET Core 6 中的最小 API 的雏形#xff0c;我们现在已经基本可以达到最小化 API 了雏形了#xff0c;在 Preview 4 的时候就写了这个小示例#xff0c;但是不够简洁#xff… ASP.NET Core 6 Minimal APIIntro微软在 ASP.NET 6 Preview 4 的介绍文章中介绍了即将到来的 ASP.NET Core 6 中的最小 API 的雏形我们现在已经基本可以达到最小化 API 了雏形了在 Preview 4 的时候就写了这个小示例但是不够简洁没有达到最简洁的代码现在在 Preview 5 上尝试一下感觉已经很简洁了于是就想分享一下Sample-0在 Preview 4 的时候示例是下面这样的using System;
using Microsoft.AspNetCore.Builder;var app WebApplication.Create(args);
app.Map(/, (Funcstring)(() Hello World));
app.Run();
主要是使用了新增的 WebApplication/WebApplicationBuilder API然后结合了 C# 9 中的 Top-Level Statement去掉了 Main 方法的声明C# 10 New Features在即将到来 C# 10 中的两个新特性可以帮助我们简化这个特性分别是global usinglamdba 优化通过 global using 这个 feature 我们可以实现命令空间的统一管理这样就可以避免写很多 namespace 的引用了我们可以把常用的 namespace 放在一个文件中管理类似于 MVC 中的 _ViewImports.cshtml 和 Razor Page 中的 _Imports这样就可以简化上面的 using 了之前看介绍说是ASP.NET Core 6 会把 ASP.NET Core 相关的常用的命令空间通过 global using 的方式默认引用这样上面的示例中就不需要再引用命名空间了。另外一个 feature 则是对于 lambda 表达式的优化可以自动进行类型推断来隐式的转换成委托就可以简化上面强制类型转换成 Funcstring 了就可以自动的隐式转换了除此之外我们还可以方便的在 lamdba 表达式上加 Attribute 注解这有助于大大简化 API 书写的复杂度具体看后面的示例吧Sample-1使用 C# 10 新特性之后的代码var app WebApplication.Create(args);
app.Map(/, () Hello World);
app.Run();
主要有两点变化一个是 Funcstring 的转换不再需要了一个是命名空间的引用会放在一个单独 Imports 文件中添加全局的命名空间引用Imports 内容如下global using System;
global using System.Collections.Generic;
global using System.Linq;
global using System.Threading.Tasks;
global using Microsoft.AspNetCore.Builder;
global using Microsoft.AspNetCore.Http;
global using Microsoft.AspNetCore.Mvc;
global using Microsoft.AspNetCore.Hosting;
global using Microsoft.AspNetCore.Routing;
global using Microsoft.Extensions.DependencyInjection;
global using Microsoft.Extensions.Hosting;
global using Microsoft.Extensions.Logging;
global using Microsoft.Extensions.Configuration;
上面提到了我们可以很方便在 lamdba 表达式上使用 Attribute下面我们就来一个例子var app WebApplication.Create(args);
app.MapPost(/info, [HttpPost](IWebHostEnvironment env) new
{Time DateTime.UtcNow,env.EnvironmentName
});
app.Run();
除了 Attribute我们还可以添加参数参数可以自动从依赖注入服务中获取如上面的 IWebHostEnvironment接着我们来测试一下我们的 API 看试试 work 了吧现在我们已经可以使用 dotnet watch 来运行项目会自动启用 Hot Reload但是测试发现感觉现在的 ASP.NET Core 里的 Hot Reload还是有点问题需要使用 Ctrl R 来重新 build 才能生效不知道是不是我姿势不对不知道大家有没有遇到这样的问题希望后面的版本能够解决这个问题可以通过 dotnet watch 来启动项目接着我们就可以通过 http://localhost:5000 或者 https://localhost:5001 来访问我们的 API 了访问 http://localhost:5000会看到下面的结果直接访问 http://localhost:5000/info会看到类似下面的结果这是因为我们的 info API 只允许 POST 方式进行访问通过工具用 POST 方式访问 http://localhost:5000/info可以看到类似下面的结果可以看到我们的 API 都已经正常工作了~~More上面的示例代码可以在 Github 上获取 https://github.com/WeihanLi/SamplesInPractice/tree/master/net6sample/MininalAPI编译需要安装 .NET 6 preview 5 环境目前 .NET 6 Preview 还是有一些问题的还不太建议大家实际项目进行升级当然自己想尝试是可以的如果使用遇到了什么问题也可以通过 Github 上的 issue 向微软反馈 https://github.com/dotnet/core/issues/6389Referenceshttps://devblogs.microsoft.com/aspnet/asp-net-core-updates-in-net-6-preview-4/https://github.com/WeihanLi/SamplesInPractice/tree/master/net6sample/MininalAPI