在开发 ASP.NET Core Web API 应用时,我们经常需要控制 API 返回给客户端的数据格式。比如,有的客户端希望接收 JSON 格式,有的可能需要 XML。这就涉及到 ASP.NET Core 中的响应格式化机制。
响应格式化是指 ASP.NET Core 将控制器中的返回值(如对象、集合等)转换为客户端可读的格式(如 JSON、XML 等)的过程。这个过程由“输出格式化器”(Output Formatters)完成。
在 ASP.NET Core 中,默认只启用了 JSON 格式化器。也就是说,无论你返回什么对象,框架都会自动将其序列化为 JSON 字符串发送给客户端。
如果你希望客户端可以通过请求头指定接收 XML 格式的数据,你需要手动启用 XML 输出格式化器。
在 Program.cs(.NET 6 及以上版本)中添加以下代码:
var builder = WebApplication.CreateBuilder(args);// 添加对 XML 格式的支持builder.Services.AddControllers() .AddXmlSerializerFormatters();var app = builder.Build();app.MapControllers();app.Run();
这样,当客户端在请求头中设置 Accept: application/xml 时,API 就会返回 XML 格式的数据;如果设置为 Accept: application/json,则返回 JSON。
有时你可能希望某个接口始终返回 JSON,即使客户端请求的是 XML。这时可以使用 [Produces] 特性:
[ApiController][Route("[controller]")][Produces("application/json")] // 强制该控制器只返回 JSONpublic class ProductsController : ControllerBase{ [HttpGet] public IActionResult Get() { var products = new[] { "Apple", "Banana", "Orange" }; return Ok(products); }} 在实际项目中,你可能希望控制 JSON 的命名规则(比如驼峰命名)、是否忽略空值等。这可以通过配置 JSON 序列化选项实现。
builder.Services.AddControllers() .AddJsonOptions(options => { options.JsonSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase; options.JsonSerializerOptions.WriteIndented = true; options.JsonSerializerOptions.DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull; }); 上述配置会让所有 JSON 响应使用驼峰命名(如 userName 而不是 UserName),并忽略值为 null 的属性。
通过本文,你已经掌握了 ASP.NET Core 中关于 响应格式化 的核心知识:如何启用多种格式(如 XML)、如何强制指定返回类型、以及如何自定义 JSON 序列化 行为。这些技巧对于构建灵活、兼容性强的 Web API 至关重要。
记住,良好的 API 设计不仅要功能正确,还要考虑不同客户端的格式需求。合理使用 ASP.NET Core 提供的格式化机制,能让你的接口更加专业和易用。
关键词回顾:ASP.NET Core、响应格式化、JSON序列化、Web API
本文由主机测评网于2025-12-01发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025121828.html