現時点では、私は仕事場で多くの小さなAPIを構築しています。これらのプロジェクトの多くは、基本的なコントローラロジックを共有しています。それらをナゲットパッケージに追加し、起動時にそれらを使用する方法はありますか?例えば、
など。 Mvcを追加するのと同じように:デフォルトのMVCコントローラを共有
IApplicationBuilder app;
....
app.UseMvc;
app.UseBasicApiVersionController();
私たちはすべてのマイクロサービスでバージョンエンドポイントを持っています。
例:
http://url/version
戻っ{ "バージョン": "1.0.0"}
私はnugetパッケージにこれを作るだろうか?
すべての開発者は、このエンドポイントをマイクロサービスに追加するために1行のコードを追加するだけで済みます。私たちはdotnetコアを使用しています。
がnugetパッケージを作成するのに役立ちません。それは自己:)
開始するための私の推測では、これに似たものである:
public static IApplicationBuilder UseBasicApiVersionController(this IApplicationBuilder app)
{
if (app == null)
throw new ArgumentNullException("app");
..... // What should I do?
return app;
}
*編集:
あなたはパッケージをnugetするようにコントローラを追加する場合プロジェクトが自動的に検出されます。しかし、それは私が望む機能ではありません。
私はそのコントローラを必要とする10のサービスを持っているかもしれません。一方のサービスだけを持っている間に、もう一方のバージョンコントロールロジックが必要です。例えば。顧客が直面しているアプリケーションには、「/バージョン」エンドポイントはありません。
そのため、起動時にapp.UseBasicApiVersionController()を使用する必要があります。
代替アプローチとして、既定のコントローラーで既定のプロジェクトテンプレートを作成する方法について説明します。または単にプロジェクト。レポを複製するだけで、必要なものすべてから始めることができます。そのプロジェクトをフォーク/ブランチアウトして、さまざまな種類のマイクロサービスのさまざまな出発点を作成することもできます。 – Marco
@マルコ>それについて考えていた。しかし、将来、バージョンエンドポイントの仕組みのロジックを変更すれば、すべてのプロジェクトに入り、修正する必要があります。 例今はバージョン番号が必要です。 しかし、後でラベル:Aplha/beta/releaseが必要な場合があります。 すべてのレガシープロジェクトを開き、既定のコントローラの新しいロジックを追加するのではなく、更新するだけで、ナゲットパッケージがあればいいでしょう。 – Kiksen
依存関係注入を使用することもできます。有効なクライアントURLを構築するために必要なすべての動的データを受け入れるいくつかの種類のURLフォーマッタクラスを提供できます。 – Silvermind