ASP.NET Consumes
最后修改于 2025 年 4 月 3 日
在本文中,我们将探讨 ASP.NET 8 中的 Consumes 属性。此属性对于指定操作方法可以接受的内容类型至关重要。
ASP.NET 是一个跨平台、高性能的框架,用于构建现代 Web 应用程序。Consumes 属性有助于定义请求内容类型的处理。
基本定义
ASP.NET 中的 Consumes 属性限制了操作方法将接受的内容类型。它指定了操作可以处理的媒体类型。
当应用于控制器或操作方法时,Consumes 会根据传入请求的 Content-Type 标头进行筛选。只有匹配的请求才会被处理。
Consumes 在 Web API 中特别有用,因为不同的端点可能接受不同的数据格式。它同时适用于 JSON、XML 和自定义格式。
ASP.NET Consumes 示例
以下示例演示了一个使用 Consumes 属性处理不同内容类型的 Web API 控制器。
Program.cs
var builder = WebApplication.CreateBuilder(args); builder.Services.AddControllers(); var app = builder.Build(); app.MapControllers(); app.Run();
这设置了一个基本的 ASP.NET 应用程序,并支持控制器。MapControllers
方法为控制器启用属性路由。
Controllers/OrdersController.cs
using Microsoft.AspNetCore.Mvc; [ApiController] [Route("api/[controller]")] public class OrdersController : ControllerBase { private static List<Order> _orders = new(); // Accepts JSON requests [HttpPost] [Consumes("application/json")] public IActionResult CreateOrderFromJson([FromBody] Order order) { _orders.Add(order); return CreatedAtAction(nameof(GetOrder), new { id = order.Id }, order); } // Accepts XML requests [HttpPost("xml")] [Consumes("application/xml")] public IActionResult CreateOrderFromXml([FromBody] Order order) { _orders.Add(order); return CreatedAtAction(nameof(GetOrder), new { id = order.Id }, order); } // Accepts form data [HttpPost("form")] [Consumes("multipart/form-data")] public IActionResult CreateOrderFromForm([FromForm] OrderForm form) { var order = new Order(form.Id, form.ProductName, form.Quantity); _orders.Add(order); return CreatedAtAction(nameof(GetOrder), new { id = order.Id }, order); } [HttpGet("{id}")] public IActionResult GetOrder(int id) { var order = _orders.FirstOrDefault(o => o.Id == id); if (order == null) return NotFound(); return Ok(order); } } public record Order(int Id, string ProductName, int Quantity); public record OrderForm(int Id, string ProductName, int Quantity);
此控制器演示了三种不同的 Consumes 场景。第一个方法仅接受请求正文中的 JSON 内容(application/json
)。
第二个方法专门处理 XML 内容(application/xml
)。第三个方法处理表单数据(multipart/form-data
)。
ApiController
属性启用了自动模型验证和其他 Web API 约定。每个操作方法处理不同的内容类型。
该示例展示了如何使用 Consumes 为不同的数据格式创建专用端点。这在使用支持多种客户端类型时非常有用。
来源
在本文中,我们探讨了 ASP.NET 8 中的 Consumes 属性。此强大功能可对请求内容类型的处理进行精确控制。