WebApi还提供了一个action同时支持多个http方法的请求,使用AcceptVerbs特性去标记。但博主觉得实际使用并不多,有兴趣的可以了解下。
[AcceptVerbs("GET", "POST")]
public IHttpActionResult GetById(int id)
{
return Ok<string>("Success" + id );
}
四、WebApi特性路由
上面说了这么多都是路由的一些全局配置。并且存在问题:
如果http请求的方法相同(比如都是post请求),并且请求的参数也相同。这个时候似乎就有点不太好办了,这种情况在实际项目中还是比较多的。比如
public class OrderController : ApiController
{
//订单排产
[HttpPost]
public void OrderProduct([FromBody]string strPostData)
{
}
//订单取消
[HttpPost]
public void OrderCancel([FromBody]string strPostData)
{
}
//订单删除
[HttpPost]
public void OrderDelete([FromBody]string strPostData)
{
}
}
这个时候如果使用我们上面讲的Restful风格的路由是解决不了这个问题的。当然,有园友可能就说了,既然这样,我们在路由模板里面加上“{action}”不就搞定了么!这样确实可行。但还是那句话,不提倡。我们来看看如何使用特性路由解决这个问题。
1、启动特性路由
如果要使用特性路由,首先在WebApiConfig.cs的Register方法里面必须先启用特性路由:
public static void Register(HttpConfiguration config)
{
// 启用Web API特性路由
config.MapHttpAttributeRoutes();
//1.默认路由
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}










