Comment passer/recevoir plusieurs arguments pour un Web RESTful API méthode GET?
L'habitude des exemples de méthodes RESTful qui prend un paramètre (qui retourne une valeur scalaire plutôt que d'un jeu de données) sont indiqués comme suit:
public string Get(int id)
{
//get and return the value
}
...où le val passé est généralement un ID, de sorte que vous pouvez l'utiliser pour obtenir une valeur scalaire basée sur cette valeur unique.
Que, bien que, si vous souhaitez passer plusieurs valeurs, comme une chaîne de caractères et un int? Est-ce simplement une question de la définition d'une méthode comme suit:
public string Get(string someString, int someInt)
{
//get and return the value
}
...et de l'appeler de la sorte:
//const string uri = "http://192.112.183.42:80/api/platypusItems/someString/someInt";, zB:
const string uri = "http://192.112.183.42:80/api/platypusItems/DuckbilledPlatypisAreGuysToo/42";
var webRequest = (HttpWebRequest) WebRequest.Create(uri);
?
OIE, le mécanisme de routage figure que, depuis deux arguments sont passés, elle doit appeler la méthode Get() avec deux arguments ("convention over configuration"), ou est-il plus ce qui doit être fait pour acheminer les choses de manière appropriée?
OriginalL'auteur B. Clay Shannon | 2013-11-10
Vous devez vous connecter pour publier un commentaire.
Si vous utilisez l'API Web 2, alors vous pouvez utiliser l'Attribut de Routage pour acheminer les demandes comme
http://192.112.183.42:80/api/platypusItems/DuckbilledPlatypisAreGuysToo/42
http://192.112.183.42:80/api/platypusItems/DuckbilledPlatypisAreGuysToo/42
sera mappé àGetItemByNameAndId
touthttp://192.112.183.42:80/api/platypusItems/42
sera mappé àGetItemById
.Noter que vous devez activer attribut de routage dans la configuration comme ceci:
Mais en général, vous devriez passer des arguments comme des paramètres supplémentaires. Il est particulièrement facile avec les requêtes GET. Cela fonctionne dans l'API Web de 1&2:
En supposant que vous avez par défaut de configuration du mappage,
http://192.112.183.42:80/api/platypusItems/42
sera mappé àGetItemById
touthttp://192.112.183.42:80/api/platypusItems/42?name=DuckbilledPlatypisAreGuysToo
sera mappé àGetItemByNameAndId
parce que les API Web peut carte 2 paramètres au lieu de 1 pourGetItemById
.Plus d'informations peuvent être trouvées dans Mike Wasson articles sur Attribut De Routage, Le routage et la Sélection de l'Action et Le routage dans l'API Web.
Voir ici comment activer la SCRO
Je vous remercie. J'ai pu activer la SCRO, mais l'ajout d'un en-tête est ce qui cause le problème.
OriginalL'auteur Nikolai Samteladze