最小 API 概述

发布:2024-10-01 16:39 阅读: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

最小API

1. 搜索 ASP.NET Core

2. 选择 ASP.NET Core 空项目模板

3. 点击“下一步”

项目

项目设置

  1. 设置您的项目名称。
  2. 选择您的项目文件夹名称。
  3. 如果您想将解决方案和项目放在同一目录中,请选中该复选框。
  4. 点击“下一步”继续。

额外的

选择最新的 .NET 8.0,并检查 HTTPS 配置。

点击“创建”按钮后,将创建一个项目。

解决方案资源管理器

解决方案资源管理器

在执行项目之前,请检查是否选择了 HTTPS。

HTTP

确保在播放按钮附近选择了 HTTPS 的打开/运行模式。现在按 F5 运行该项目。

系统将提示您输入 ASP.NET Core SSL 证书,然后“安全警告”对话框会提示您选择“是”。这可能会重复询问您两次。

成功设置 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
    API
  • URI: https://localhost:7080/updatemember
    标头
  • URI: https://localhost:7080/deletemember
    身体