Web Apiで同じURLを生成するにはどうすればよいですか?
var url = Url.Action("Action", "Controller", new { product = product.Id, price = price }, protocol: Request.Url.Scheme);
追伸.
URLは、Web API内からMVCコントローラー/アクションに対して生成される必要があります。
したがって、基本的には、私のapi/generateurl
そして、それはにURLを返します:
http://domain.com/controller/action?product=productId&price=100
Web Api ControllerのUrl.Actionに最も近いヘルパーは、ルート名、コントローラー名、アクション名、ルートパラメーター(必要な場合)によってURLを生成するUrl.Linkメソッドです。
簡単な例を示します
デフォルトのApp_start/RouteConfig.cs
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
Web Apiコントローラー:
public class MyWebApiController : ApiController
{
public string Get()
{
var url = this.Url.Link("Default", new { Controller = "MyMvc", Action = "MyAction", param1 = 1, param2 = "somestring" });
return url;
}
}
MVCコントローラー
public class MyMvcController : Controller
{
public ActionResult MyAction(int param1, string param2)
{
// ...
}
}
WebApiコントローラーによって生成されるURLはhttp://myDomain/MyMvc/MyAction?param1=1¶m2=somestring
。
プロトコル/ URLスキーマを渡す方法を見つけられませんでしたが、それは単なる文字列であり、プロトコルがどうあるべきかを知っていれば、それを操作できます。
お役に立てれば。
編集:
これは、プロトコル部分に役立つ場合があります。 rl.Linkを使用してWeb APIでHTTPSリンクを生成