.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) { }
}
相关推荐
Mike_6669 小时前
txt_json和xml_json
xml·python·json
DevOpenClub9 小时前
语义化获取站点 JSON 结构内容 API 接口
json
20YC编程社区9 小时前
一分钟了解XML语言格式,使用场景,和它的优缺点
xml
~plus~13 小时前
.NET 8 C# 委托与事件实战教程
网络·c#·.net·.net 8·委托与事件·c#进阶
Kay.Wen13 小时前
LabVIEW 转换 XML文本
xml·labview
互联网散修16 小时前
零基础鸿蒙应用开发第三十二节:JSON核心基础与文件的读写
华为·json·harmonyos
rockey62717 小时前
AScript动态脚本多语言环境支持
sql·c#·.net·script·eval·function·动态脚本
dotNET实验室17 小时前
ASP.NET Core 内存缓存实战:一篇搞懂该怎么配、怎么避坑
.net
web3.088899918 小时前
淘宝、京东、1688 拍立淘图搜 API 均返回 JSON 格式
python·json
龙侠九重天18 小时前
ML.NET 实战:快速构建分类模型
分类·数据挖掘·c#·.net