Plusieurs paramètres dans une web api 2 obtenir
Je veux faire une api web qui est passé de 4 paramètres.
Voici mon itinéraire:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{email}/{firstname}/{lastname}/{source}"
);
Voici la signature de méthode
public string GetId(string email, string firstname, string lastname, string source)
Ici est l'appel de l'url
http://fakedomain.com/api/Contacts/[email protected]&firstname=joe&lastname=shmoe&source=123
J'ai une erreur 404.
Si je réglez chaque paramètre est facultatif dans la voie de config, et mis en place chaque argument avec une valeur par défaut elle est appelée. Cependant, chaque argument devient la valeur par défaut et non pas à la valeur passée.
Je sens que je suis proche, ce qui me manque?
Vous devez vous connecter pour publier un commentaire.
Vous assurer que vous avez par défaut de l'api route paramètre dans WebApiConfig.cs fichier.
Note : j'ai remplacé fakedomain avec localhost et il fonctionne... (localhost/api/Contacts/[email protected]&firstname=joe&lastname=shmoe&source=123)
Vous n'avez pas besoin d'un enregistrement de gamme pour gérer plusieurs paramètres. L'enregistrement de gamme que vous avez créé serait à la recherche pour le trajet suivant
/api/controller/[email protected]/Dan/FunnyLastName/TheCoffeeShop
mais vous essayez de passer en paramètres, spécifiez pas un itinéraire.
avec cet enregistrement de gamme:
la suite OBTENIR de point de terminaison:
pourrait être frappé comme :
ou
ou toute autre combinaison de paramètres (ou pas de paramètres, car ils ont des valeurs par défaut)
Puisque vous avez un "Nommé" action (GetId) au lieu de la valeur par défaut actions (GET,POST,PUT..), ce qui complique les choses un peu et vous aurez à travailler sur un itinéraire personnalisé pour gérer le nom de l'action. La suivante est ce que j'utilise pour personnaliser les noms d'action (id est nécessaire dans cet exemple)
Votre point de terminaison aurait explicitement accepter un paramètre avec le nom "id"
Ce point de terminaison serait frappé à la route suivante:
À la suite de la RESTful spec, il est préférable de rester à l'écart de la coutume des noms d'action, si possible. La plupart du temps, vous pouvez vous en sortir avec les verbes HTTP et il suffit d'utiliser nommé actions de manipuler les éléments existants (donc pourquoi l'identification est obligatoire dans mon exemple). Pour votre code que vous pourriez juste OBTENIR deux points de terminaison, qui prend l'ID de l'objet, celui qui renvoie tous les éléments (y compris ids) basé sur "paramètres de recherche".
Ces deux gérées par le routage par défaut d'enregistrement.
et puis dans votre méthode de contrôleur:
Et de construire un appel ajax comme ceci: