私の最初の問題は、 Restful API でバージョン管理を行うためのベストプラクティスを探していることです。これについて話す人はあまりいません。良い答えがないか、現時点で正確な解決策を見つけることができません。
(1) まずはTag
orBranch
をバージョン毎にhttp://domain.com/API/ {version} にしようと考えています。そのため、新しい API がリリースされた場合Tag
は、エクスポートしてそれぞれの URL に公開しますが、1 つの Web アプリケーションに異なるリビジョンのソースを混在させるのは難しいようです。
(2)次に、1つのバージョンに1つのコントローラーを使用することを考えています:(この質問のように ASP.NET MVC 3で構築されたREST APIのバージョン管理 - ベストプラクティス)
http://domain.com/API/1.0/{AnAction} => will go to APIV1Controller.{AnAction}
http://domain.com/API/2.0/{AnAction} => will go to APIV2Controller.{AnAction}
ただし、バージョンごとにルートを記述する必要があります。
(3) 3 番目の方法は、バージョンが URL ではなく POST パラメーターにある PayPal API からアイデアを得る方法です。そのため、URL は に固定されてhttp://domain.com/API/
いますが、ユーザーはorVersion
を持つパラメータを指定する必要があります。"1.0"
"2.0"
これに対する解決策: (2) は私にとっては問題ありません。現在、この方法を使用していますが、(2) と (3) を混在させたいので、このVersion
パラメーターをチェックして転送するための Index アクションが 1 つしかない APIController があります。 APIV1Controller.{AnAction} または APIV2Controller.{AnAction} のいずれかで、それぞれのコントローラーおよびアクションへの要求。
リダイレクトなしで別のコントローラーとアクションを転送、呼び出し、または呼び出す方法についてのグーグルとスタックオーバーフローの後。良い答えと良い練習はないようです。コントローラーの新しいインスタンスを作成するだけで、誰かが別のコントローラーで .NET MVC Call メソッドに応答します。突然、どうしようreroute
!
質問:
reroute
リダイレクトせずに別のアクションから別のコントローラーとアクションを実行することは可能ですか?それを行う方法は?
または特定の質問です。ユーザーが でリクエストhttp://domain.com/API/{AnAction}
した場合、からまでVersion="2.0"
どうすればよいですか?reroute
APIController.Index
APIV2Controller.{AnAction}
私はIoCを使用していません。