2016-02-16 16 views
7

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?

Odpowiedz

0

o ile mi wiadomo, używaj najpierw ustawień Formatters, które można znaleźć. więc jeśli użyjesz tego:

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

Twoja dokumentacja wygenerowana przez Swagger będzie w porządku. swagger to bardzo dobra biblioteka i mam nadzieję, że wkrótce rozwiążą ten problem.

Powiązane problemy