在.NET 6中尝试了最少的API,但无法使其与XML内容类型一起工作。如果我使用标准控制器,使用.AddXmlSerializerFormatters()
扩展可以完成这项工作:
builder.Services.AddControllers().AddXmlSerializerFormatters();
但是当我从控制器切换到.MapPost(..)
时,我开始得到415个HTTP响应。
app.MapPost("/endpoint", ([FromBody] Request request) => {})
.Accepts<Request>("text/xml");
HTTP回应:415错误信息。应为支持的JSON媒体类型,但得到的是“text/xml”
有没有其他方法可以声明使用最少API的XML格式化程序?
2条答案
按热度按时间0sgqnhkj1#
正如guru-stron链接的文章所建议的,通过实现自己的 Package 模型(提供
BindAsync
方法)可以传递XML文档。我向HttpRequest添加了一个扩展方法,以方便内容类型验证。
然后,您可以通过最小API端点直接将模型用作参数。
**最后的一些想法:**此实现使您能够将泛型XML文档传递到终结点。但是,如果您需要特定的文档结构,则可以通过使XDocumentModel需要泛型类型参数并从XDocument示例提取此类型的属性来实现此实现。
t2a7ltrp2#
我是这样做的: