.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) { }
}
相关推荐
步、步、为营4 小时前
.NET Core 3.1 升级到 .NET 8
microsoft·.net·.netcore
西哥写代码6 小时前
基于dcmtk的dicom工具 第九章 以json文件或sqlite为数据源的worklist服务(附工程源码)
sqlite·json·mfc·dcmtk·worklist
CrimsonEmber6 小时前
ros2的package.xml和rosdep
xml·ros2
Mu.38712 小时前
JSON解析
json
追逐时光者12 小时前
一款实用的 Visual Studio 发布部署插件,助力提高部署效率!
后端·.net
看天走路吃雪糕14 小时前
墨者:XPath注入漏洞实战
xml·xpath·sql注入·墨者学院
SchuylerEX15 小时前
第六章 JavaScript 互操(3)JS调用.NET
前端·javascript·c#·.net·blazor
我今晚不熬夜15 小时前
JSON在java中的使用
java·开发语言·json
探索java1 天前
深入解析 Spring 获取 XML 验证模式的过程
xml·java·spring
阿华的代码王国1 天前
【Android】卡片式布局 && 滚动容器ScrollView
android·xml·java·前端·后端·卡片布局·滚动容器