API のバージョンごとに個別のヘルプ ページを作成したいと考えています。たとえば、ユーザーは /help?v=1 にアクセスしてバージョン 1.0 のルートを表示し、/help?v=2 にアクセスしてバージョン 2.0 のルートを表示できます。
を使用して、定義されたバージョンのルートのみを返すプロパティをSDammann.WebApi.Versioning
に追加し、バージョンを引数としてコンストラクターに追加しました。それから私はこれを試しました:Version
VersionedApiExplorer
config.Services.Add(typeof(IApiExplorer), new VersionedApiExplorer(config, "1"));
config.Services.Add(typeof(IApiExplorer), new VersionedApiExplorer(config, "2"));
しかし、これにより次のエラーが発生します。
The service type IApiExplorer is not supported.
Parameter name: serviceType
構成を機能させるために、サービスのインスタンスを 1 つだけ追加しconfig.Services.Replace(typeof(IApiExplorer), new VersionedApiExplorer(GlobalConfiguration.Configuration, "1"));
て、ヘルプ コントローラーをテストできるようにしました。次に、これを試しました:
foreach (var service in Configuration.Services.GetServices(typeof(IApiExplorer))) {
if (service.GetType() != typeof(VersionedApiExplorer)) continue;
var explorer = service as VersionedApiExplorer;
if (explorer.Version == v) {
apiExplorer = explorer;
}
}
これにより、上記で受け取ったのと同じエラーが発生します。通常は使用することthis.Configuration.Services.GetApiExplorer()
はわかっていますが、それを使用して の適切なインスタンスを取得する方法がわかりませんVersionedApiExplorer
。コントローラーで適切なものを直接インスタンス化できることはわかっていApiExplorer
ますが、可能であればそれを構成ファイルに保持したいと思います。
だから私は2つの質問があります:
VersionedApiExplorer
タイプの 2 つのサービスを構成オブジェクトに追加するにはどうすればよいですか?- ヘルプ コントローラーで適切なサービスを取得するにはどうすればよいですか?
それとも、同じ目標を達成するために取ることができるまったく異なるアプローチはありますか?
ありがとうございました!