Mam punkt końcowy WebAPI, który implementuje dwie różne wersje interfejsu API (starszego i nowego). Starsze punkty końcowe używają określonego Serializera, który ma wszystkie obiekty serializowane jako małe litery z podkreśleniami, punkt końcowy v2 używa nazw właściwości wielbłądów. Na przykład, V1 = „document_type” i V2 = „DocumentType”Jak skonfigurować niestandardowy serializator Swagger/Swashbuckle IControllerConfiguration ASP.NET WebAPI
ten jest obecnie osiągnięty za pomocą określonych atrybutów kontrolera do zdefiniowania serializacji, tak:
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());
}
}
To wszystko działa dobrze, gdy wywołana z klientem poprzez REST, ale dokumentacja wygenerowana przez Swagger zawsze pokazuje nazwy właściwości przy użyciu starszych ustawień serializera. Wszelkie sugestie dotyczące konfiguracji swashbuckle do serializacji każdej wersji poprawnie?