您的位置:首页 > 编程语言 > ASP

ASP.Net Web-api 不可多得的零基础教程3

2018-04-11 19:27 525 查看
在ASP.Net Web-api 不可多得的零基础教程2中,我们使用了[AcceptVerbs("GET")]或者[HttpGet]两种特性标记来将方法映射到Http请求上。
但是,需要注意的是,上述的两种方法并没有改变请求的基本格式,什么意思呢?public IEnumerable<Employee> Get()
{
return list;
}
[HttpGet]
public IEnumerable<Employee> RpcStyleGet()
{
return list;
}
上面的两种方式,他们的请求url完全一样,例如:http://localhost:12345/api/Demo
那么问题来了,我如果既不想使用Getxxx开头去命名,又不想加[AcceptVerbs("GET")]或者[HttpGet]两种特性,又该怎么处理呢?
我们首先打开WebApiConfig.cs文件:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}聪明的你发现了Route这个词,没错,就是路由,联想到路径,联想到Url,那么就知道它的用处了。
这里代码定义了一种路由格式,routeTemplate: "api/{controller}/{id}"
它的定义就代表url是http://localhost:12345/api/Demo/123
这里的Demo就是对应的DemoController,id就是123
那么,id=Parameter.Optional是什么意思呢?意思是可以有也可以没有,它是可选的。
也就是说,这个路由模板,代表着两种url:
http://localhost:12345/api/Demo

http://localhost:12345/api/Demo/123

那么,下面的两种方法,我想去使用,该怎么办?

public IEnumerable<Employee> RpcStyleGet()
{
return list;
}
public Employee GetEmployeeRpcStyle(int id)
{
return list.First(e => e.Id == id);
}先做以下工作:在

WebApiConfig.cs中Register方法添加如下代码:

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

并且放在默认的模板代码上面:效果如下

public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute( name: "RpcApi", routeTemplate: "api/{controller}/{action}/{id}", defaults: new { id = RouteParameter.Optional } );
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
那么,那两个方法就可以使用了:
public IEnumerable<Employee> RpcStyleGet()
{
return list;
}
public Employee GetEmployeeRpcStyle(int id)
{
return list.First(e => e.Id == id);
}url分别是:http://localhost:12345/api/Demo/rpcstyleget http://localhost:12345/api/Demo/getemployeerpcstyle/12345
怎么样,你有没有学会啊?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: