3

私の最初の問題は、 Restful API でバージョン管理を行うためのベストプラクティスを探していることです。これについて話す人はあまりいません。良い答えがないか、現時点で正確な解決策を見つけることができません。

(1) まずはTagorBranchをバージョン毎に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"どうすればよいですか?rerouteAPIController.IndexAPIV2Controller.{AnAction}

私はIoCを使用していません。

4

2 に答える 2

0

http://coderjournal.com/2010/09/simple-rest-api-versioning-using-mef-and-mvc/

これはまさにあなたが望むことをしているように見えますが、それらに再ルーティングするのではなく、完全に異なるコントローラーのセットを使用するという非常に異なるアプローチをとっています.

お役に立てれば。

于 2011-05-12T18:56:24.483 に答える