ZetCode

ASP.NET MapGet

最后修改于 2023 年 10 月 18 日

在本文中,我们将展示如何在 ASP.NET 中将 GET 请求映射到处理程序。

ASP.NET 是一个跨平台、高性能、开源的框架,用于构建现代、支持云的 Web 应用程序。它由 Microsoft 开发。

HTTP GET 方法请求指定资源的表示。使用 GET 的请求应该只检索数据。

GET 请求

MapGet 方法向终结点生成器添加一个 RouteEndpoint,该终结点匹配指定模式的 HTTP GET 请求。

ASP.NET MapGet 示例

以下是一个简单的 MapGet 示例。

Program.cs
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();

app.MapGet("/", () => "home page\n");
app.MapGet("/about", () => "about page\n");

app.Run("https://:3000");

我们使用 MapGet 映射了两个终结点。

app.MapGet("/", () => "home page\n");

使用 MapGet,我们将 lambda 表达式映射到 / 路径。

app.Run("https://:3000");

应用程序监听端口 3000。

$ curl localhost:3000
home page
$ curl localhost:3000/about
about page

我们生成了两个 GET 请求。

$ curl localhost:3000 -X POST -i
HTTP/1.1 405 Method Not Allowed
Content-Length: 0
Date: Wed, 28 Sep 2022 11:33:34 GMT
Server: Kestrel
Allow: GET

$ curl localhost:3000/about -X POST -i
HTTP/1.1 405 Method Not Allowed
Content-Length: 0
Date: Wed, 28 Sep 2022 11:33:39 GMT
Server: Kestrel
Allow: GET

但是,POST 请求是不允许的。

ASP.NET MapGet 示例 II

在下一个示例中,我们将两个终结点映射到本地函数。

Program.cs
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();

app.MapGet("/", homePage);
app.MapGet("/about", aboutPage);

app.Run("https://:3000");

string homePage() => "home page\n";
string aboutPage() => "about page\n";

我们有两个终结点。

app.MapGet("/", homePage);
app.MapGet("/about", aboutPage);

我们将这两个终结点映射到两个本地函数。

Program.cs
using var client = new HttpClient();
var content = await client.GetStringAsync("https://:3000/about");

Console.WriteLine(content);

我们创建了一个 C# 控制台应用程序,它向其中一个终结点发送 GET 请求。我们使用了 HttpClient 类。

$ dotnet run 
about page

我们运行控制台应用程序,并从 ASP.NET 应用程序接收到响应。

在本文中,我们展示了如何在 ASP.NET 中使用 MapGet 映射 GET 请求。

作者

我的名字是 Jan Bodnar,我是一名充满热情的程序员,拥有丰富的编程经验。我自 2007 年以来一直在撰写编程文章。至今,我已撰写了 1,400 多篇文章和 8 本电子书。我在编程教学方面拥有十多年的经验。

列出所有 ASP.NET 教程