126 votes

Comment créer des Url ASP.NET Web API ?

Dans ASP.NET MVC, nous avons pour les actions. Y a-t-il quelque chose de semblable comme qui devrait acheminer vers/api/contrôleur ?

143voto

Darin Dimitrov Points 528142

Le ApiController a une propriété appelée Url qui est de type Système.Web.Http.Le routage.UrlHelper qui vous permet de construire des url pour les contrôleurs d'api.

Exemple:

public class ValuesController : ApiController
{
    // GET /api/values
    public IEnumerable<string> Get()
    {
        // returns /api/values/123
        string url = Url.Route("DefaultApi", new { controller = "values", id = "123" });
        return new string[] { "value1", "value2" };
    }

    // GET /api/values/5
    public string Get(int id)
    {
        return "value";
    }

    ...
}

Cette UrlHelper n'existe pas ni dans vos vues, ni dans les contrôleurs standard.


Mise à JOUR:

Et pour faire du routage à l'extérieur d'un ApiController vous pouvez effectuer les opérations suivantes:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        string url = Url.RouteUrl(
            "DefaultApi", 
            new { httproute = "", controller = "values", id = "123" }
        );
        return View();
    }
}

ou à l'intérieur d'un point de vue:

<script type="text/javascript">
    var url = '@Url.RouteUrl("DefaultApi", new { httproute = "", controller = "values", id = "123" })';
    $.ajax({
       url: url,
       type: 'GET',
       success: function(result) {
           // ...
       }
    });
</script>

Avis de l' httproute = "" route jeton qui est important.

Évidemment, cela suppose que votre Api route est appelée DefaultApi dans votre RegisterRoutes méthode en Global.asax:

routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "api/{controller}/{id}",
    defaults: new { id = RouteParameter.Optional }
);

47voto

Gábor Imre Points 602

Il fonctionne avec la forme plus simple de `` donc tu ne dois pas faire référence à des noms de routage :

Vous pouvez ajouter un `` si l’URL est nécessaire dans la région. (Contrôleurs de l’Api sont en dehors des zones par défaut.) J’utilise 4 MVC.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X