2016-02-16 7 views
7

मैं एक वेबएपीआई endpoint कि एपीआई के दो विभिन्न संस्करणों (विरासत और नए) को लागू करता है। विरासत एंडपॉइंट्स एक विशिष्ट सीरिएलाइज़र का उपयोग करते हैं जिसमें अंडरस्कोर के साथ कम केस वाले शब्दों के रूप में क्रमबद्ध सभी ऑब्जेक्ट्स होते हैं, v2 endpoint ऊंट केज्ड संपत्ति नामों का उपयोग करता है। उदाहरण के लिए, V1 = "DOCUMENT_TYPE" और V2 = "documentType"स्वैगर को कैसे कॉन्फ़िगर करें/Swashbuckle कस्टम serializer IControllerConfiguration ASP.NET वेबएपीआई

के लिए यह वर्तमान में नियंत्रक विशिष्ट विशेषताओं का उपयोग तो की तरह, क्रमबद्धता को परिभाषित करने के हासिल की है: जब एक ग्राहक से कहा जाता

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()); 
    } 
} 

यह सब ठीक काम करता है आरईएसटी के माध्यम से, लेकिन स्वैगर द्वारा उत्पन्न दस्तावेज हमेशा विरासत serializer सेटिंग्स का उपयोग कर संपत्ति नाम दिखाता है। प्रत्येक संस्करण को क्रमबद्ध करने के लिए swashbuckle को कॉन्फ़िगर करने पर कोई सुझाव?

उत्तर

0

जहाँ तक मुझे अकड़ कि पा सकते हैं पहले Formatters सेटिंग्स का उपयोग पता है। इसलिए यदि आप इसका उपयोग करते हैं:

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

स्वैगर द्वारा उत्पन्न आपके दस्तावेज़ ठीक होंगे। स्वैगर एक बहुत अच्छी लाइब्रेरी है और मुझे उम्मीद है कि वे जल्द ही इस समस्या को ठीक कर सकते हैं।

संबंधित मुद्दे