.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) { }
}
相关推荐
Hfc.5 小时前
docker-daemon.json
docker·容器·json
焚 城13 小时前
.NET8关于ORM的一次思考
后端·.net
bicijinlian13 小时前
.Net HttpClient 管理客户端(初始化与生命周期管理)
c#·.net·httpclient·.net httpclient·c# http
AI+程序员在路上19 小时前
Web Service及其实现技术(SOAP、REST、XML-RPC)介绍
xml·rpc·web
o0向阳而生0o20 小时前
42、在.NET 中能够将⾮静态的⽅法覆写成静态⽅法吗?
c#·.net
DragonnAi21 小时前
【目标检测标签转换工具】YOLO 格式与 Pascal VOC XML 格式的互转详解(含完整代码)
xml·yolo·目标检测
小赵面校招1 天前
SpringBoot整合MyBatis-Plus:零XML实现高效CRUD
xml·spring boot·mybatis
bicijinlian1 天前
.Net HttpClient 使用准则
.net·httpclient·.net httpclient·c# httpclient·c# http请求
yuanpan1 天前
.net/C#进程间通信技术方案总结
开发语言·c#·.net
UpUpUp……1 天前
Linux--JsonCpp
linux·运维·服务器·c++·笔记·json