您的位置:首页 > 其它

关于Web API的个人理解

2016-03-12 14:26 309 查看
Web Api的调用主要有四种, Get(获取)、Post(新增)、Delete(删除)、Put(更新)

路由定义常用的两种方式

方法1

config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional });


方法2

config.Routes.MapHttpRoute(
name: "DefaultApi2",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional });


以如下函数为例

1

public Model GetModel(int id)
{

var model = _modelRepository.GetItem(id);
if (model == null)
{
throw new HttpResponseException(HttpStatusCode.NotFound);
}
return model;
}


2

public IEnumerable<Model> GetModels()
{
var models= _modelRepository.GetAll().ToList();
var functions = _functionRepository.GetAll().ToList();
foreach (var model in models)
{
model.Functions = functions.Where(f => f.SubModelID == model.ModelID);
}
return models;
}


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.注册过程

一 注册

config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional });


二 建立Controller

public class ModelController:ApiController { }

三 建立参数仓库

public class FunctionRepository:IRepository<Function>

即可
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: