Comment développer une ASP.NET l'API Web pour accepter un objet complexe comme paramètre?
J'ai le texte suivant API Web (GET):
public class UsersController : ApiController
{
public IEnumerable<Users> Get(string firstName, string LastName, DateTime birthDate)
{
//Code
}
}
C'est un GET, donc je peux l'appeler comme ceci:
http://localhost/api/users?firstName=john&LastName=smith&birthDate=1979/01/01
et de recevoir un résultat xml d'utilisateur(s).
Est-il possible d'encapsuler des paramètres à une classe comme ceci:
public class MyApiParameters
{
public string FirstName {get; set;}
public string LastName {get; set;}
public DateTime BirthDate {get; set;}
}
Et alors:
public IEnumerable<Users> Get(MyApiParameters parameters)
Je l'ai essayé et quand j'essaie d'obtenir le résultat de http://localhost/api/users?firstName=john&LastName=smith&birthDate=1979/01/01
, le parameter
est null.
Vous devez vous connecter pour publier un commentaire.
Par défaut des types complexes sont lues à partir du corps, c'est pourquoi vous obtenez la valeur null.
Changer votre action de signature à
si vous voulez que le modèle de classeur pour tirer le modèle de la chaîne de requête.
Vous pouvez lire plus sur le fonctionnement de l'API Web n'liaison de paramètre dans l'excellent article de Mike Décrochage de MSFT - http://blogs.msdn.com/b/jmstall/archive/2012/04/16/how-webapi-does-parameter-binding.aspx