当前位置:首页 > C# > 正文

ASP.NET Core响应格式化详解(小白也能轻松掌握Web API返回数据的格式控制)

在开发 ASP.NET Core Web API 应用时,我们经常需要控制 API 返回给客户端的数据格式。比如,有的客户端希望接收 JSON 格式,有的可能需要 XML。这就涉及到 ASP.NET Core 中的响应格式化机制。

ASP.NET Core响应格式化详解(小白也能轻松掌握Web API返回数据的格式控制) Core  响应格式化 JSON序列化 Web API 第1张

什么是响应格式化?

响应格式化是指 ASP.NET Core 将控制器中的返回值(如对象、集合等)转换为客户端可读的格式(如 JSON、XML 等)的过程。这个过程由“输出格式化器”(Output Formatters)完成。

默认支持的格式

在 ASP.NET Core 中,默认只启用了 JSON 格式化器。也就是说,无论你返回什么对象,框架都会自动将其序列化为 JSON 字符串发送给客户端。

如何启用 XML 格式支持?

如果你希望客户端可以通过请求头指定接收 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 的命名规则(比如驼峰命名)、是否忽略空值等。这可以通过配置 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