基本的なルーティングを備えたシンプルなAPIがあります。デフォルトのVisual Studio 2015 ASP.NET Core APIテンプレートを使用してセットアップされました。
私はこのコントローラーとアクションを持っています:
[Route("api/[controller]")]
public class DocumentController : Controller
{
[HttpGet("info/{Id}")]
public async Task<Data> Get(string Id)
{
//Logic
}
}
したがって、このメソッドに到達するには、GET /api/document/info/some-id-here
を呼び出す必要があります。
。NET Coreでは、そのメソッド内で、完全なルートを文字列として取得できますか?
だから私は例えばすることができます:
var myRoute = retrieveRoute();
// myRoute = "/api/document/info/some-id-here"
.Net CoreのRequestオプション(HttpRequest)を使用して、要求された完全なURLを取得できます。
var route = Request.Path.Value;
最終的なコード。
[Route("api/[controller]")]
public class DocumentController : Controller
{
[HttpGet("info/{Id}")]
public async Task<Data> Get(string Id)
{
var route = Request.Path.Value;
}
}
結果ルート: "/ api/document/info/some-id-here"//たとえば
MVCに、現在のルート値に基づいて新しいルートURLを作成するように依頼することもできます。
[Route("api/[controller]")]
public class DocumentController : Controller
{
[HttpGet("info/{Id}")]
public async Task<Data> Get(string Id)
{
//Logic
var myRoute = Url.RouteUrl(RouteData.Values);
}
}
Url.RouteUrl
は、ルート値を指定してルートURLを作成できるヘルパーメソッドです。 RouteData.Values
は、currentリクエストのルート値を提供します。