【问题标题】:How to configure Swagger/Swashbuckle custom serializer IControllerConfiguration ASP.NET WebAPI如何配置 Swagger/Swashbuckle 自定义序列化程序 IControllerConfiguration ASP.NET WebAPI
【发布时间】:2016-02-16 19:35:57
【问题描述】:

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

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

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 以正确序列化每个版本的任何建议?

【问题讨论】:

  • 你做到了吗?

标签: c# asp.net asp.net-web-api swagger swashbuckle


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多