我有一个使用 Swagger 的基本 .NET 6 Web API 项目,并且有一个应该接受 JSON 和 XML 的虚拟 HttpPost 端点。据我所知,JSON 的模型绑定不区分大小写,但 XML 则不然,这就是我的问题。
在 Program.cs 中,我对 XML 序列化进行了以下设置:
builder.Services.AddControllers(options =>
{
options.InputFormatters.Add(new XmlSerializerInputFormatter(options));
options.OutputFormatters.Add(new XmlSerializerOutputFormatter());
});
我的端点:
[HttpPost]
public async Task<DummyDto> PostDummyData(DummyDto dummyDto)
{
return await Task.FromResult(dummyDto);
}
My DTO:
public class DummyDto
{
public int Id { get; set; }
public string Name { get; set; }
}
Swagger UI 中 application/xml 和 text/xml 的默认示例:
<?xml version="1.0" encoding="UTF-8"?>
<DummyDto>
<id>0</id>
<name>string</name>
</DummyDto>
正如你所看到的,我的类名是正确的,但我的属性默认是小写的,经过长时间的搜索,我仍然不知道如何正确显示我的属性属性,或者如何禁用 XML 模型绑定的区分大小写。
通过将 [XmlElement] 属性添加到属性中,我能够使其使用小写字母,但我不喜欢这种解决方法。我可以使用任何通用的解决方案来解决这个问题吗?
默认情况下,Web API 序列化具有 [Serializable] 属性的类型字段(例如版本)。
您可以在 Program.cs 中添加以下代码行来阻止 Web API 执行此操作:
builder.Services.AddControllersWithViews().
AddJsonOptions(options =>
{
options.JsonSerializerOptions.PropertyNameCaseInsensitive = true;
options.JsonSerializerOptions.PropertyNamingPolicy = null;
});
Test Result:
![enter image description here](https://i.stack.imgur.com/ZQFiK.png)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)