为什么{action}不存在于默认路由模板中(ASP.NET Web API)

时间:2017-10-31 03:46:17

标签: asp.net-web-api

为什么{action}未包含在ASP.NET Web API项目的默认路由模板中?

默认情况下会生成以下代码:

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

2 个答案:

答案 0 :(得分:1)

Web Api设计为restful Api,在创建一个非常重要的Api时,最重要的事情之一是在URL和HTTP方法之间建立正确的关系。 对于每个实体(控制器),应该有一个GET,POST,PUT和DELETE方法,它们都在实体级别上运行。

如果我们创建一个名为UserController的控制器,那么它应该在http级别上公开实体User。 为了满足宁静的原则,控制器应该能够处理大部分这些请求

GET api/user
GET api/user/id
POST api/user
PUT api/user
PUT api/user/id
DELETE api/user
DELETE api/user/id

默认情况下,Web API旨在支持这些restful请求,这很可能是默认路由设置为"api/{controller}/{id}"的原因,因为这是支持api的静态实现的最低要求

答案 1 :(得分:0)

如官方文档所示,在Web API中,通常的惯例是省略“{action}” https://docs.microsoft.com/en-us/aspnet/web-api/overview/web-api-routing-and-actions/routing-and-action-selection