gpt4 book ai didi

c# - 如何配置 Swagger/Swashbuckle 自定义序列化程序 IControllerConfiguration ASP.NET WebAPI

转载 作者:太空狗 更新时间:2023-10-29 17:27:38 34 4
gpt4 key购买 nike

我有一个 WebAPI 端点,它实现了两个不同版本的 API(旧版和新版)。遗留端点使用特定的序列化程序,将所有对象序列化为带下划线的小写单词,v2 端点使用驼峰式属性名称。例如,V1 = "document_type"和 V2 = "documentType"

目前这是通过使用 Controller 特定属性来定义序列化来实现的,如下所示:

public class CamelCaseControllerConfiguration : Attribute, IControllerConfiguration
{
public void Initialize(HttpControllerSettings controllerSettings, HttpControllerDescriptor controllerDescriptor)
{
controllerSettings.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
controllerSettings.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new StringEnumConverter());
}
}

当通过 REST 从客户端调用时,这一切都工作正常,但 Swagger 生成的文档始终使用遗留序列化程序设置显示属性名称。关于配置 swashbuckle 以正确序列化每个版本的任何建议?

最佳答案

据我所知swagger使用第一个可以找到的Formatters设置。所以如果你使用这个:

controllerSettings.Formatters.Insert(0, new JsonMediaTypeFormatter { SerializerSettings = { ContractResolver = new CamelCasePropertyNamesContractResolver() } });

您的 Swagger 生成的文档会很好。swagger 是一个非常好的库,我希望他们能尽快解决这个问题。

关于c# - 如何配置 Swagger/Swashbuckle 自定义序列化程序 IControllerConfiguration ASP.NET WebAPI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35441557/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com