ASP.NET Web API で次の要求を受け取りたい:
http://domain.com/proxy/service?id=12
最初の /proxy/ 部分でのみ一致し、このコントローラーアクションにルーティングします。したがって、アクションのパラメーターは URL の残りの部分になります: "service?id=124"
public string Get(string url)
{
//Calls external resource and returns response
}
URL には、クエリ文字列 (複数のリモート サーバーを呼び出すためのプロキシとして機能する) の後に、任意の数のセグメントを含めることができますが、一致しません。
以下のようなものが欲しいのですが、うまくいきません。URL の /proxy/ 部分の後に複数のセグメントがあるとすぐに、一致するように調整されます。
config.Routes.MapHttpRoute(
name: "ApiProxy",
routeTemplate: "proxy/{resourcePath}",
defaults: new { Controller = "Proxy", Action="Get" }
);
私は MessageHandlers を調べましたが、それらはすべてのリクエストに対して起動されます。これは理想的ではないようで、代わりに標準の Web Api ルーティングに結び付けられることを望んでいました。