日期:2014-05-17  浏览次数:20452 次

如何在WebAPI的控制器的GET请求中传递参数
本帖最后由 maodian552 于 2013-10-30 10:55:10 编辑
在.net 4.0 中,当建立了一个WebApi项目以后,其控制器中的GET方法会默认给两个,一个是空方法,一个是有ID的方法,在官方教程中(http://www.asp.net/web-api/overview/getting-started-with-aspnet-web-api/tutorial-your-first-web-api),详细的说明了在.net项目总两种请求的Result语句:
// List all products.
HttpResponseMessage response = client.GetAsync("api/products").Result; 
// Get a product by ID
response = client.GetAsync("api/products/1").Result;

但是,实际情况中,请求往往是比较复杂的,比如我有一个GET请求需要返回一个LIST的集合,而GET请求中除了有ID以外还有一个分页参数PageParam{pageSize=10,pageNumber=1},而client.GetAsync()的方法中,没有传递参数的重载object routeValues,那么我目前想到的办法就是用字符串拼接请求链接,但是参数比较复杂的时候此种方法也不太现实,那么,请问还有什么解决方案能实现此目标呢?
.NET WebApi

------解决方案--------------------
引用:
楼上的方法是我准备在没有其他方便点的解决方案了的时候使用的,应为这样的话,整个调用时的URL字符串都得拼接,不方便维护和管理……


那没办法了,web调用方与webapi之间肯定得有一个衔接,WebAPI也不知道究竟会传递哪些条件过来,只能列举一切可能传递过来的条件。至于你说的拼接,没有你想象的复杂,web调用方你可以引用Newtonsoft.Json.Linq,通过JObject对象add查询条件参数,最终tostring皆可拼接到APIUrl后面。处理方式应该有很多,lz自己权衡吧!