ASP.NET 请求
最后修改于 2025 年 4 月 3 日
在本文中,我们将探讨 ASP.NET 8 中的 Request 对象。Request 对象提供了对 ASP.NET 应用程序中传入的 HTTP 请求数据的访问。
ASP.NET 是一个跨平台、高性能的框架,用于构建现代 Web 应用程序。Request 对象对于处理客户端输入至关重要。
基本定义
ASP.NET 中的 Request 对象代表来自客户端的传入 HTTP 请求。它提供了对标头、查询字符串、表单数据、Cookie 等的访问。
在 ASP.NET Core 中,可以通过 HttpContext.Request 属性访问 Request 对象。它是 Microsoft.AspNetCore.Http 命名空间的一部分。
Request 提供了访问 HTTP 请求不同部分的属性。这些属性包括 Path、Query、Headers、Cookies、Form 和 Body。每个属性在请求处理中都有特定用途。
ASP.NET 请求示例
以下示例演示了在 ASP.NET 8 中使用 Request 对象访问 HTTP 请求不同部分的各种方法。
var builder = WebApplication.CreateBuilder(args); builder.Services.AddControllers(); var app = builder.Build(); app.MapControllers(); app.Run();
这设置了一个基本的 ASP.NET 应用程序,并支持控制器。MapControllers 方法为控制器启用属性路由。
using Microsoft.AspNetCore.Mvc;
using System.Text;
[ApiController]
[Route("api/[controller]")]
public class RequestDemoController : ControllerBase
{
[HttpGet("headers")]
public IActionResult GetHeaders()
{
var headers = Request.Headers
.ToDictionary(h => h.Key, h => h.Value.ToString());
return Ok(headers);
}
[HttpGet("query")]
public IActionResult GetQueryParams()
{
var queryParams = Request.Query
.ToDictionary(q => q.Key, q => q.Value.ToString());
return Ok(queryParams);
}
[HttpGet("path/{id}")]
public IActionResult GetPathParams(int id)
{
return Ok(new {
Id = id,
Path = Request.Path,
RouteValues = Request.RouteValues
});
}
[HttpPost("form")]
public async Task<IActionResult> ProcessForm()
{
if (!Request.HasFormContentType)
return BadRequest("Expected form content");
var form = await Request.ReadFormAsync();
var formData = form.ToDictionary(f => f.Key, f => f.Value.ToString());
return Ok(formData);
}
[HttpPost("body")]
public async Task<IActionResult> ProcessBody()
{
using var reader = new StreamReader(
Request.Body, Encoding.UTF8);
var body = await reader.ReadToEndAsync();
return Ok(new { BodyContent = body });
}
}
此控制器演示了使用 Request 对象的五种不同方法。第一种方法展示了如何通过 Request.Headers 访问 HTTP 标头。
第二种方法使用 Request.Query 访问查询字符串参数。第三种方法显示了请求中的路径参数和路由值。
第四种方法演示了使用 ReadFormAsync 进行表单数据处理。第五种方法展示了如何将原始请求正文读取为字符串。
每种方法都以结构化格式返回提取的数据。该示例展示了 Request 对象在处理不同请求组件方面的多功能性。
来源
在本文中,我们探讨了 ASP.NET 8 中的 Request 对象。这个基本组件提供了对传入 HTTP 请求数据的全面访问。