最小 API 概述
阅读:15
点赞:0
在本文中,您将了解最小 API 并获得以下问题的答案:
-
什么是最小 API? -
最小 API 与传统 API 之间的区别 -
逐步创建最小 API -
支持的 HTTP 动词类型 -
路由
一、什么是最小 API?
最小 API 是使用 ASP.NET Core 技术以最少的依赖关系创建 HTTP API 的最简单、最简便的方法。最小 API 是一种非常轻量级的 API 开发方法,只需极少的设置和配置即可开始使用。
最小 API 在 .NET 6 版本中被引入。
最小 API 的功能
-
简单 -
高性能 -
易于使用
二、最小 API 与传统 API 之间的区别
最小 API | 传统 API |
---|---|
无需使用控制器进行开发 | 使用控制器进行开发 |
适合小型项目 | 适合大型项目 |
不充分利用 MVC 框架机制 | 充分利用 MVC 框架机制 |
基于完全配置和编码开发 | 基于约定开发 |
三、逐步创建最小 API
1. 搜索 ASP.NET Core
2. 选择 ASP.NET Core 空项目模板
3. 点击“下一步”
项目设置
-
设置您的项目名称。 -
选择您的项目文件夹名称。 -
如果您想将解决方案和项目放在同一目录中,请选中该复选框。 -
点击“下一步”继续。
选择最新的 .NET 8.0,并检查 HTTPS 配置。
点击“创建”按钮后,将创建一个项目。
解决方案资源管理器
在执行项目之前,请检查是否选择了 HTTPS。
确保在播放按钮附近选择了 HTTPS 的打开/运行模式。现在按 F5 运行该项目。
系统将提示您输入 ASP.NET Core SSL 证书,然后“安全警告”对话框会提示您选择“是”。这可能会重复询问您两次。
成功设置 SSL 证书后,浏览器将显示输出。
四、program.cs 文件的默认代码
var builder = WebApplication.CreateBuilder(args); // 创建 Web 应用程序构建器
var app = builder.Build(); // 构建应用程序
// Root or default URI of app
app.MapGet("/", () => "Hello World!"); // 映射根 URI,返回 "Hello World!"
app.Run(); // 运行应用程序
您已经在先前的输出屏幕中看到了“Hello World”。
五、支持的 HTTP 动词类型
地图 HTTPVERB | 描述 |
---|---|
MapGet | 这是一种 HttpGet 类型 |
MapPost | 这是一种 HttpPost 类型 |
MapPut | 这是一种 HttpPut 类型 |
MapDelete | 这是一种 HttpDelete 类型 |
更新代码后,您可以看到上面所有 HTTP 动词的实现:
var builder = WebApplication.CreateBuilder(args); // 创建 Web 应用程序构建器
var app = builder.Build(); // 构建应用程序
// Root or default URI of app
app.MapGet("/", () => "Hello World! This is a Get"); // 映射根 URI,返回 "Hello World! This is a Get"
app.MapPost("/", () => "This is a POST"); // 映射根 URI,返回 "This is a POST"
app.MapPut("/", () => "This is a PUT"); // 映射根 URI,返回 "This is a PUT"
app.MapDelete("/", () => "This is a DELETE"); // 映射根 URI,返回 "This is a DELETE"
app.Run(); // 运行应用程序
六、路由
路由是一种响应特定端点的客户端请求的方式。与传统的基于控制器的路由相比,路由处理更容易。
正常路由
// Defined with routing
app.MapGet("/getmembers", () => "Get Members records"); // 映射 /getmembers URI,返回 "Get Members records"
app.MapPost("/newmember", () => "This is a new member POST request"); // 映射 /newmember URI,返回 "This is a new member POST request"
app.MapPut("/updatemember", () => "This is an update member PUT request"); // 映射 /updatemember URI,返回 "This is an update member PUT request"
app.MapDelete("/deletemember", () => "This is a delete member DELETE request"); // 映射 /deletemember URI,返回 "This is a delete member DELETE request"
七、路由处理程序
路由处理程序是在路由匹配时执行的函数。路由处理程序的类型包括:
-
Lambda 表达式 -
局部函数 -
实例方法
示例:使用 Lambda 表达式
app.MapGet("/getmembers", () => "Get Members records"); // 映射 /getmembers URI,返回 "Get Members records"
示例:使用局部函数
string GetDateTime() => DateTime.Now.ToString(); // 定义局部函数,返回当前日期时间字符串
app.MapGet("/GetLocalFunction1", GetDateTime); // 映射 /GetLocalFunction1 URI,调用 GetDateTime 函数
八、program.cs 的完整代码
var builder = WebApplication.CreateBuilder(args); // 创建 Web 应用程序构建器
var app = builder.Build(); // 构建应用程序
// Root or default URI of app
app.MapGet("/", () => "Hello World! This is a Get"); // 映射根 URI,返回 "Hello World! This is a Get"
app.MapPost("/", () => "This is a POST"); // 映射根 URI,返回 "This is a POST"
app.MapPut("/", () => "This is a PUT"); // 映射根 URI,返回 "This is a PUT"
app.MapDelete("/", () => "This is a DELETE"); // 映射根 URI,返回 "This is a DELETE"
// Defined with routing
app.MapGet("/getmembers", () => "Get Members records"); // 映射 /getmembers URI,返回 "Get Members records"
app.MapPost("/newmember", () => "This is a new member POST request"); // 映射 /newmember URI,返回 "This is a new member POST request"
app.MapPut("/updatemember", () => "This is an update member PUT request"); // 映射 /updatemember URI,返回 "This is an update member PUT request"
app.MapDelete("/deletemember", () => "This is a delete member DELETE request"); // 映射 /deletemember URI,返回 "This is a delete member DELETE request"
string GetDateTime() => DateTime.Now.ToString(); // 定义局部函数,返回当前日期时间字符串
app.MapGet("/GetLocalFunction1", GetDateTime); // 映射 /GetLocalFunction1 URI,调用 GetDateTime 函数
app.Run(); // 运行应用程序
九、注意
要测试最小 API,您可以使用 POSTMAN 或浏览器扩展基础测试器,如 Talend API、Rest API Inspector 和 API Tester。
输出
- URI: https://localhost:7080/getmembers
- URI: https://localhost:7080/newmember
- URI: https://localhost:7080/updatemember
- URI: https://localhost:7080/deletemember