.net 6.0 webapi支持 xml返回xml json返回json

csharp 复制代码
// 添加控制器并配置格式化器
var builder = WebApplication.CreateBuilder();
builder.Services.AddControllers(options =>
{
    options.Filters.Add<ContentTypeFilter>();
    options.ReturnHttpNotAcceptable = true; // 强制要求Accept头匹配
    // 添加 XML 格式化器
    options.InputFormatters.Add(new XmlSerializerInputFormatter(options));
    options.OutputFormatters.Add(new XmlSerializerOutputFormatter());
})
    .AddXmlSerializerFormatters()
    .AddJsonOptions(options =>
    {
        options.JsonSerializerOptions.Encoder = JavaScriptEncoder.Create(UnicodeRanges.All);
    });

添加筛选器

csharp 复制代码
public class ContentTypeFilter: IResultFilter
{
    public void OnResultExecuting(ResultExecutingContext context)
    {
        if (context.Result is ObjectResult objectResult)
        {
            var requestContentType = context.HttpContext.Request.ContentType;
            if (requestContentType?.Contains("application/xml") == true)
            {
                objectResult.ContentTypes.Clear();
                objectResult.ContentTypes.Add("application/xml");
            }
            else // 默认或JSON
            {
                objectResult.ContentTypes.Clear();
                objectResult.ContentTypes.Add("application/json");
            }
        }
    }

    public void OnResultExecuted(ResultExecutedContext context) { }
}
相关推荐
mengzhi啊6 小时前
缓存类CacheDataManager把临时数据存入json。做成插件·
qt·缓存·json
golang学习记10 小时前
Go 1.27新特性: json/v2使用有趣指南
开发语言·golang·json
jiushidt16 小时前
ArcGIS Pro Add‑in 打包流程详解
arcgis·c#·.net·arcgispro
Token掘金室17 小时前
JSON模式结构化输出报错
java·服务器·json
她说..17 小时前
MySQL JSON 处理学习文档
学习·mysql·json
半亩码田17 小时前
【.NET新特性·第17篇】EF Core 10 与 Aspire 13.1
python·flask·.net
数据狐(Datafox)19 小时前
京东商品详情API接口解析(附 JSON 样例)
java·开发语言·json
小羊没烦恼!20 小时前
Office文件的奥秘——.NET平台下不借助Office实现Word、Powerpoint等文件的解析(完)
java·大数据·前端·网络·word·powerpoint·.net
张人玉2 天前
基于 C# / .NET 8 + Windows Forms + SQLite 的桌面银行业务演示系统——华夏示范银行管理系统
windows·sqlite·c#·.net
慧都小妮子2 天前
.NET 报表控件选型对比:Stimulsoft 与 FastReport 怎么选
c#·.net·报表开发·数据可视化·报表控件·报表引擎选型