根据WEBAPI的路由规则,在实际项目当中有二种用法,前端
一:webAPI.Config里面为 web
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);api
控制器里面加上【HttpGet,HttpPOST】认证,并将接口使用路由暴露出来,写法有两种spa
(1)在控制器上面加上路由前缀,action以前加上action名字从而将整个路由暴露出来,方便前端调用接口
[RoutePrefix("api/Values")]
public class ValuesController : ApiController
{
// GET api/values
[HttpGet]
[Route("testLog")]
public IEnumerable<string> testLog()
{
LogHelper.WriteLog("hello can you hear me~");
return new string[] { "value1", "value2" };
}
(2)直接在action以前加上整个路由路径从而将整个路由暴露出来
public class ValuesController : ApiController
{
// GET api/values
[HttpGet]
[Route("api/Values/testLog")]
public IEnumerable<string> testLog()
{
LogHelper.WriteLog("hello can you hear me~");
return new string[] { "value1", "value2" };
}路由
二:webAPI.Config里面为 get
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
控制器里面加上【HttpGet,HttpPOST】认证, 不须要使用路由暴露接口string
[HttpGet]
public IEnumerable<string> testLog()
{
LogHelper.WriteLog("hello can you hear me~");
return new string[] { "value1", "value2" };
}it
两种状况,若是不使用【httpPost】【httpGet】,后台会根据前台的请求类型匹配控制器的action,如get请求,无论前台访问哪一个接口,后台均匹配以Get开头的控制器actionio