APIの2つの異なるバージョン(レガシーおよび新規)を実装するWebAPIエンドポイントがあります。従来のエンドポイントでは、すべてのオブジェクトが下線付きの小文字の単語としてシリアル化されている特定のシリアライザを使用します。v2エンドポイントでは、ラクダに基づいたプロパティ名が使用されます。Swagger/Swashbuckleカスタムシリアライザを構成する方法IControllerConfiguration ASP.NET WebAPI
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());
}
}
このクライアントから呼び出されたときに、すべてが正常に動作します:例えば、V1 =「DOCUMENT_TYPE」とV2 =「のDocumentType」
は、これはそうのように、シリアル化を定義するために、コントローラの特定の属性を使用して、現在達成され、 RESTを使用していますが、Swaggerによって生成されたドキュメントには、従来のシリアライザ設定を使用したプロパティ名が常に表示されます。 swashbuckleを設定して各バージョンを正しくシリアル化するための提案はありますか?