首页 新闻 会员 周边 捐助

webapi的方法调用

0
悬赏园豆:10 [已解决问题] 解决于 2015-10-12 16:33

网上例子说的webapi方法好像只区分请求方式, get请求调用controller里面的getxxx方法,然后还可以通过有没有附加参数确定

那比如我想通过两个不同的关键字去查询数据,比如getA(string id)和getB(string name)

这样我需要如何写地址才能分别调用这两个方法?

是不是给附加参数的时候{id:xxx}和{name:xxx}就能区分上面的情况

还有一种只是方法名不一样,但参数名都是一样的,怎么办?比如getA(string id)和getB(string id)

最爱吃糖了的主页 最爱吃糖了 | 初学一级 | 园豆:41
提问于:2015-10-09 19:48
< >
分享
最佳答案
0

e.g. ( code for testing , don't use in producting)

Code defintion

model->Product

1 Public class Product{
2     Public int id{get;set;}
3     Public string name{get;set;}
4     Public string description{get;set;}
5 }

controller->ProductController

 1 public class ProductController:ApiController{
 2 
 3   Private IList<Model.Product> products=new List<Model.Product>();
 4   
 5   Public ProductController(){
 6      products.Add(new Product{id:1,name:"product1",description:"product desc"});
 7      products.Add(new Product{id:2,name:"product2",description:"product desc"});
 8      products.Add(new Product{id:3,name:"product3",description:"product desc"});
 9   }
10 
11   // get product by product id
12   // api/products/1
13   Public Model.Product Get(int id){
14      return products.Find(p=>p.id=id);
15   }
16   
17   // get product by product name
18   // api/products/?name=product1
19   Public Model.Product Get(string name){
20      return products.Find(p=>p.name=name);
21   }
23 }

route->Global

1 routes.MapHttpRoute(
2     name: "DefaultApi",
3     routeTemplate: "api/{controller}/{id}",
4     defaults: new { id = RouteParameter.Optional }
5 );

How to use

get product by product id 

uri->http://domainname/api/products/1

result->{id:1,name:"product1",description:"product desc"}

uri->http://domainname/api/products/?name=product1

result->{id:1,name:"product1",description:"product desc"}

Thanks

 

"还有一种只是方法名不一样,但参数名都是一样的,怎么办?比如getA(string id)和getB(string id)"

you can define routing implementation

收获园豆:10
Vivian软陶公仔 | 菜鸟二级 |园豆:284 | 2015-10-09 21:30
其他回答(2)
0

路由

吴瑞祥 | 园豆:29449 (高人七级) | 2015-10-10 09:01
0

你弄一个查询实体参数就可以了。

唯美菠萝 | 园豆:282 (菜鸟二级) | 2015-10-10 10:33
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册