Ho un endpoint WebAPI che implementa due diverse versioni dell'API (legacy e new). Gli endpoint legacy utilizzano uno specifico serializzatore con tutti gli oggetti serializzati come parole minuscole con caratteri di sottolineatura, mentre l'endpoint v2 utilizza i nomi di proprietà cased cammello. Ad esempio, V1 = "DOCUMENT_TYPE" e V2 = "DocumentType"Come configurare serializzatore personalizzato Swagger/Swashbuckle IControllerConfiguration ASP.NET WebAPI
Questo è attualmente realizzato utilizzando attributi specifici controller per definire la serializzazione, così:
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());
}
}
Tutto questo funziona bene quando chiamato da un client tramite REST, ma la documentazione generata da Swagger mostra sempre i nomi delle proprietà utilizzando le impostazioni del serializzatore precedente. Qualche suggerimento sulla configurazione di swashbuckle per serializzare correttamente ogni versione?