网站首页 > 开源技术 正文
前言
如果你使用过其他一些轻量级Web框架,比如Node.JS,你就会知道,创建具有最小依赖项的HTTP API是多么简单:
var express = require('express')
var app = express()
app.get('/', function (req, res) {
res.send('hello My IO!')
})
app.listen(3000)
而现在,使用.NET 6,我们也可以在ASP.NET Core中创建仅包括最少文件、功能和依赖项的最小Web API。
最小Web API
要实现上面相同的功能,只需要三行代码:
var app = WebApplication.Create(args);
app.MapGet("/", () => "hello My IO!");
app.Run();
- 首先,创建一个WebApplication实例;
- 然后,使用MapGet方法配置了一个最小Web API端点;
- 最后,使用Run方法启动Web API应用程序。
但是,要在生产环境下使用的API不可能这么简单,至少需要处理依赖项和中间件。
Demo
1.使用模板
打开Visual Studio 2022,创建新项目,选择“ASP.NET Core Web API”项目模板:
可以看到Use controllers选项默认选中的,取消该选项,则会创建最小Web API。
2.代码结构
相较于VS2019生成的项目结构,文件精简了,而且代码量也少很多:
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
var app = builder.Build();
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
app.UseHttpsRedirection();
var summaries = new[]
{
"Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
};
app.MapGet("/weatherforecast", () =>
{
var forecast = Enumerable.Range(1, 5).Select(index =>
new WeatherForecast
(
DateTime.Now.AddDays(index),
Random.Shared.Next(-20, 55),
summaries[Random.Shared.Next(summaries.Length)]
))
.ToArray();
return forecast;
})
.WithName("GetWeatherForecast");
app.Run();
internal record WeatherForecast(DateTime Date, int TemperatureC, string? Summary)
{
public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
}
相较于以前我们使用两个单独的文件Program.cs和Startup.cs来配置应用程序托管和启动。现在,全部都在Program.cs中实现:
- 在WebApplicationBuilder实例上使用Addxxx方法向DI容器注册特定服务,类似Startup类的ConfigureServices方法实现。
- 在WebApplication实例上使用Usexxx方法将一系列中间件加入到HTTP管道,类似Startup类的Configure方法实现。
- DTO使用record定义,而且也放在同一个Program.cs文件中。
3.功能演示
现在我们运行应用程序,Visual Studio 2022默认使用 Kestrel Web服务器,而不是IIS Express。
最小Web API默认已经集成了Swagger,我们可以直接在这里验证API是否工作正常:
结论
作为要在生产环境下使用的API,随着项目需求和复杂性的增加,单个文件会变得非常臃肿。
因此,将不同功能代码分解到不同的层和文件中肯定是必然的结果。
目前来说,最小Web API仅用于快速创建演示项目,而对生产项目使用自定义模板,可能是较好的选择。
- 上一篇: 从零开始搭建一个基础版的 Vue 脚手架
- 下一篇: 如何搭建属于你自己的前端插件系统-开课吧
猜你喜欢
- 2024-09-10 Facebook发新版React,这些新功能让程序员直呼强大!
- 2024-09-10 React Native 网络层分析(react-native-router-flux)
- 2024-09-10 Brisk-Admin基于vue3+element-plus+vite开箱即用后台前端框架
- 2024-09-10 前端性能优化,你想知道的都在这里
- 2024-09-10 AngularJS2 教程—JavaScript 环境配置—架构大全第一章
- 2024-09-10 「免费开源」基于Vue和Quasar的动态表关系管理(六)
- 2024-09-10 2018年前端流行哪些技术?(推荐收藏)
- 2024-09-10 你还在用 for 循环遍历集合?试试 JavaScript 新增的 7 种方法吧!
- 2024-09-10 Vue开发中常用的ES6新特性(vue支持es几)
- 2024-09-10 在线编辑excel功能一次完整体验历程,以及可以避免的坑
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)