Map:配置一个请求路径的路由映射,并将该路径下的请求路由到指定的中间件或处理程序。它可以用于处理各种 HTTP 方法(GET、POST、PUT 等)的请求。
app.Map("/111", (app) =>
{
// 配置处理程序
// app.UseMiddleware<MyMiddleware>();
app.Run(async context =>
{
await context.Response.WriteAsync("Hello, specified string!");
});
});
app.MapGet 方法是 app.Map 方法的一种特殊情况,专门用于处理 HTTP GET 方法的请求。
app.MapGet("/999", async context =>
{
var processName = System.Diagnostics.Process.GetCurrentProcess().ProcessName;
await context.Response.WriteAsync(processName);
});
MapWhen 方法接受一个谓词参数,用于定义路由匹配的条件。即 用于根据自定义的谓词条件来配置路由映射。它可以根据请求的上下文信息(例如路径、方法、标头等)来决定是否应用指定的处理程序。
在下列示例中,使用 context.Request.Path == "/path" 作为谓词,表示只有当请求的路径为 "/path" 时,才会执行后续的逻辑。
app.MapWhen(context => context.Request.Path == "/123", app =>
{
app.Run(async context =>
{
await context.Response.WriteAsync("Hello, specified string!");
});
});
Use 用于添加中间件到请求处理管道中。
app.Use((context, next) => // 调用Use方法添加中间件到请求处理管道中
{
1
// 中间件逻辑
return next();
2
});
app.Use(async (context, next) => // 调用Use方法添加中间件到请求处理管道中(异步)
{
3
// 中间件逻辑
await next();
4
});
执行顺序:1 → 3 → 4 → 2
UseWhen:根据指定的条件来添加中间件到请求处理管道中(根据条件的结果决定是否执行中间件)。
app.UseWhen(context => context.Request.Query.ContainsKey("key"), (appBuilder) =>
{
// 中间件逻辑
});
Endpoint:用于配置终结点,即路由到的处理程序或中间件。可以根据请求的谓词、路径和处理程序类型来配置终结点。
app.UseEndpoints(endpoints =>
{
endpoints.MapGet("/path", async context =>
{
// 处理程序逻辑
await context.Response.WriteAsync("Hello World!");
});
});
Run:用于添加一个终结点到请求处理管道中。它是一种简化的方式,用于配置一个只有一个处理程序的终结点。
app.Run(async context => // 调用Run方法添加中间件到请求处理管道中
{
// 处理程序逻辑
await context.Response.WriteAsync("Hello World!");
});