Web Api的调用主要有四种, Get(获取)、Post(新增)、Delete(删除)、Put(更新)
路由定义常用的两种方式
方法1
1 config.Routes.MapHttpRoute( 2 name: "DefaultApi", 3 routeTemplate: "api/{controller}/{id}", 4 defaults: new { id = RouteParameter.Optional });
方法2
1 config.Routes.MapHttpRoute( 2 name: "DefaultApi2", 3 routeTemplate: "api/{controller}/{action}/{id}", 4 defaults: new { id = RouteParameter.Optional });
以如下函数为例
1
1 public Model GetModel(int id) 2 { 3 4 var model = _modelRepository.GetItem(id); 5 if (model == null) 6 { 7 throw new HttpResponseException(HttpStatusCode.NotFound); 8 } 9 return model; 10 }
2
1 public IEnumerable<Model> GetModels() 2 { 3 var models= _modelRepository.GetAll().ToList(); 4 var functions = _functionRepository.GetAll().ToList(); 5 foreach (var model in models) 6 { 7 model.Functions = functions.Where(f => f.SubModelID == model.ModelID); 8 } 9 return models; 10 }
3
public IEnumerable<Model> GetModels(int asd,int mmm) { return _modelRepository.GetAll().Where(c => c.ModelID == asd).ToList(); }
方法1 函数1 : http://localhost:18264/api/Model/2
函数2 : http://localhost:18264/api/Model/
函数3 : http://localhost:18264/api/Model?asd=2&mmm=3(这里是有多个参数的情况)
方法2 函数1 : http://localhost:18264/api/Model/GetItem/2
函数2 : http://localhost:18264/api/Model/GetModels
函数3 : http://localhost:18264/api/Model/GetModels?asd=2&mmm=3(这里是有多个参数的情况)
个人补充
1.注意 id = RouteParameter.Optional 设置默认值的时候我们没有给ID设置因此 函数2才能找到无参数的GetModels方法 如果设置id默认值为2 那么http://localhost:18264/api/Model/ 就会定位到model2
2.Action代表着方法名,id代表着参数名,为什么会有方法2,在方法1没有不足以满足需求的时候可以考虑方法2,比如函数名不一样,但是参数一样 HTTP请求都是Get 需要采用方法2进行路由定义
3.注册过程
一 注册
1 config.Routes.MapHttpRoute( 2 name: "DefaultApi", 3 routeTemplate: "api/{controller}/{id}", 4 defaults: new { id = RouteParameter.Optional });
二 建立Controller
1 public class ModelController:ApiController 2 { 3 }
三 建立参数仓库
1 public class FunctionRepository:IRepository<Function>
即可