Comment développer une API Web ASP.NET pour accepter un object complexe en tant que paramètre?

J’ai l’API Web (GET) suivante:

public class UsersController : ApiController { public IEnumerable Get(ssortingng firstName, ssortingng LastName, DateTime birthDate) { // Code } } 

C’est un GET, donc je peux l’appeler ainsi:

 http://localhost/api/users?firstName=john&LastName=smith&birthDate=1979/01/01 

et recevoir un résultat XML des utilisateurs.

Est-il possible d’encapsuler des parameters dans une classe comme ceci:

 public class MyApiParameters { public ssortingng FirstName {get; set;} public ssortingng LastName {get; set;} public DateTime BirthDate {get; set;} } 

Et puis avoir:

  public IEnumerable Get(MyApiParameters parameters) 

Je l’ai essayé et chaque fois que j’essaie d’obtenir le résultat de http://localhost/api/users?firstName=john&LastName=smith&birthDate=1979/01/01 , le parameter est null.

Par défaut, les types complexes sont lus du corps, c’est pourquoi vous obtenez null.

Changez votre signature d’action pour

  public IEnumerable Get([FromUri]MyApiParameters parameters) 

si vous voulez que le classeur modèle tire le modèle de la chaîne de requête.

Vous pouvez en savoir plus sur la façon dont l’API Web lie les parameters dans l’excellent article de Mike Stall de MSFT – http://blogs.msdn.com/b/jmstall/archive/2012/04/16/how-webapi-does-parameter -binding.aspx