2012-03-13 4 views

Répondre

4

Il suffit de changer ou d'ajouter la route dans global.asax

routes.MapHttpRoute(name: "DefaultApi1", routeTemplate: "api/{controller}/{id}/{name}", Defaults: new{}); 
52

Vous pouvez également appeler l'URL avec params spécifiques dans le querystring:

/api/actions?param1=5&param2=1/1/2000 

Ensuite, la méthode du contrôleur serait:

GetByParams(int param1, DateTime param2) 
+5

Ceci est la meilleure réponse. La réponse acceptée fonctionne, mais l'URL n'a pas beaucoup de sens./id/name correspond à quelque chose comme ça pour une URL: http: //www.mysite/api/DoStuff/12345/Vince. Cela n'a pas beaucoup de sens. Comme "Vince" est un élément de la catégorie "12345". http: //www.mysite/api/users/Vince fait beaucoup plus de sens ou http: //www.mysite/api/users? name = Vince & id = 12345 – vbullinger

+0

Grande réponse. Exactement ce que je voulais. –

+0

Coul vous fournissez un lien vers les détails officiels sur la méthode GetByParams? Je n'ai pas été capable de le localiser. Je l'ai testé, cependant, et cela fonctionne comme vous l'avez décrit. – galmok

3

Je pense que la façon la plus simple est d'utiliser simplement AttributeRouting. Les noms {} doivent correspondre à vos paramètres.

Attribute Routing in ASP.NET Web API 2

+0

Ça a marché pour moi! Merci. –

+0

Homme Je l'ai utilisé 1000 fois, et j'ai toujours pensé que c'était un peu un "hack" et il y a un meilleur moyen. On dirait que c'est en fait la meilleure pratique .. – Kadaj