J'ai une API simple avec un routage de base. Il a été configuré à l'aide du modèle d'API ASP.NET Core Visual Studio 2015 par défaut.
J'ai ce contrôleur et cette action:
[Route("api/[controller]")]
public class DocumentController : Controller
{
[HttpGet("info/{Id}")]
public async Task<Data> Get(string Id)
{
//Logic
}
}
Donc, pour atteindre cette méthode, je dois appeler GET /api/document/info/some-id-here
.
Est-il possible avec .NET Core, à l'intérieur de cette méthode, de récupérer sous forme de chaîne l'itinéraire complet?
Je pourrais donc faire par exemple:
var myRoute = retrieveRoute();
// myRoute = "/api/document/info/some-id-here"
Vous pouvez obtenir l'URL complète demandée en utilisant l'option Request (HttpRequest) dans .Net Core.
var route = Request.Path.Value;
Votre code final.
[Route("api/[controller]")]
public class DocumentController : Controller
{
[HttpGet("info/{Id}")]
public async Task<Data> Get(string Id)
{
var route = Request.Path.Value;
}
}
Route des résultats: "/ api/document/info/some-id-here" // par exemple
Vous pouvez également demander à MVC de créer une nouvelle URL de route en fonction des valeurs de route actuelles:
[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
est une méthode d'aide qui vous permet de créer une URL de route en fonction des valeurs de route. RouteData.Values
vous donne les valeurs de route pour la demande actuelle.