当前位置: 首页 > news >正文

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

// 添加控制器并配置格式化器
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);
    });

添加筛选器

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) { }
}

相关文章:

  • Vue.js 与 Axios 实现音乐自由
  • 初阶数据结构(C语言实现)——4.2队列
  • C++和OpenGL实现3D游戏编程【连载24】——父物体和子物体之间的坐标转换
  • JavaWeb基础二(Servlet)
  • 项目上传到Gitee过程
  • Linux《基础开发工具(中)》
  • jenkins+ant+jmeter生成的测试报告空白
  • 选择排序算法OpenMP并行优化
  • 【编程题】7-5 堆中的路径
  • 理解C++模板库:依赖名
  • Dagger 2 系列(五)——进阶之@Scope 和 @Singleton
  • 《网络安全》中RSA加密算法的计算过程
  • Windows 图形显示驱动开发-WDDM 3.2-用户模式工作提交(三)
  • NFC标签读写开发指南
  • 《反脆弱》:从不确定性中获益的智慧✨
  • DHCP配置(二)— 接口模式
  • 【神经网络】python实现神经网络(二)——正向推理的模拟演练
  • 【Qt】成员函数指针
  • 【机器学习chp12】半监督学习(自我训练+协同训练多视角学习+生成模型+半监督SVM+基于图的半监督算法+半监督聚类)
  • ngx_openssl_module
  • 林诗栋/蒯曼不敌日本组合,无缘晋级世乒赛混双四强
  • 王缉慈|迈向近零的产业集群需加强利益相关者合作行动
  • 嘴巴总是发干,喝水也不管用?小心是这几种疾病的警报
  • 美国公布新型核弹B61-13,威力是广岛原子弹的21倍
  • 宋鹍已任首都机场集团有限公司董事长、党委书记
  • 上海国际电影节将于6月3日公布排片表,6月5日中午开票