12

API の 2 つの異なるバージョン (レガシーと新規) を実装する WebAPI エンドポイントがあります。従来のエンドポイントは、すべてのオブジェクトがアンダースコア付きの小文字の単語としてシリアル化された特定のシリアライザーを使用し、v2 エンドポイントはキャメル ケースのプロパティ名を使用します。たとえば、V1 = "document_type" および V2 = "documentType"

これは現在、コントローラー固有の属性を使用してシリアライゼーションを定義することで実現されています。

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

REST を介してクライアントから呼び出された場合、これはすべて正常に機能しますが、Swagger によって生成されたドキュメントには常に、従来のシリアライザー設定を使用してプロパティ名が表示されます。各バージョンを適切にシリアル化するためのスワッシュ バックルの構成に関する提案はありますか?

4

1 に答える 1