如何开发一个ASP.NET Web API接受一个复杂的对象作为参数?
我有以下Web API(GET):
public class UsersController : ApiController { public IEnumerable<Users> Get(string firstName, string LastName, DateTime birthDate) { // Code } }
这是一个GET,所以我可以这样调用它:
http://localhost/api/users?firstName=john&LastName=smith&birthDate=1979/01/01
并接收用户的XML结果。
是否有可能像这样封装参数到一个类:
public class MyApiParameters { public string FirstName {get; set;} public string LastName {get; set;} public DateTime BirthDate {get; set;} }
然后有:
public IEnumerable<Users> Get(MyApiParameters parameters)
我已经尝试过,并且随时尝试从http://localhost/api/users?firstName=john&LastName=smith&birthDate=1979/01/01
获取结果, parameter
为null。
默认情况下,复杂types是从正文读取,这就是为什么你得到空。
改变你的行动签名
public IEnumerable<Users> Get([FromUri]MyApiParameters parameters)
如果您希望模型联编程序从查询string中提取模型。
您可以在MSFT的Mike Stall的优秀文章中详细了解Web API如何进行参数绑定 – http://blogs.msdn.com/b/jmstall/archive/2012/04/16/how-webapi-does-parameter -binding.aspx