2016-09-13 28 views
0

为什么默认的网络API 2 HTTP路由不包含{action}为什么默认的HTTP路线不包含{行动}

从Microsoft样本:

// Configure Web API for self-host. 
HttpConfiguration config = new HttpConfiguration(); 
config.Routes.MapHttpRoute( 
    name: "DefaultApi", 
    routeTemplate: "api/{controller}/{id}", 
    defaults: new { id = RouteParameter.Optional } 
); 

为什么它不像这个:

// Configure Web API for self-host. 
HttpConfiguration config = new HttpConfiguration(); 
config.Routes.MapHttpRoute( 
    name: "DefaultApi", 
    routeTemplate: "api/{controller}/{action}/{id}", 
    defaults: new { id = RouteParameter.Optional } 
); 

为什么动作部分不是正确路由所必需的?

的代码是ROM http://www.asp.net/web-api/overview/hosting-aspnet-web-api/use-owin-to-self-host-web-api

非常感谢!

+0

因为在该模式下,方法通过Http Verbs(Get,POST,PUT)和参数进行匹配。您可以添加'{action}',然后通过方法名称匹配。 – user3185569

回答

1

该示例中的操作是隐式匹配的。如果你看,它们都是不同的HTTP动词。

+0

好的,所以添加'{action}'不会导致任何问题?非常感谢! – BendEg

+1

如果我是你,我会使用[属性路由](http://www.asp.net/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api- 2)代替。它更明确。我从来不需要改变默认路线。 –

+0

谢谢你的提示! – BendEg

相关问题