这个问题可能会在较早的时候提出,因此可以重复。
当我们配置ASP.NET核心应用(MVC)时,我们在Startup.cs - configure - app.useMvc()下定义和映射路由。这个很好用。然而,当WebAPI出现的时候,为什么我们需要专门指定[Route("api/[controller]")呢?换句话说,webAPI只适用于属性路由?
为什么Configure方法不能处理此路由配置?这在早期的MVC/WebAPI (不是核心)中是一个很好的选择。
我错过了什么吗?
发布于 2017-02-09 21:41:55
在ASP.NET Core MVC中,MVC和Web之间没有区别(就像在MVC5/WebAPI2中一样)。无论请求是返回视图还是另一种类型的ActionResult,路由都应该以相同的方式工作。也就是说,属性路由是ASP.NET核心MVC中的默认约定,因为它使路由逻辑更接近将响应路由的代码。您仍然可以在Startup.Configure中设置全局路由(如您所见),但传统的推荐方法是在控制器和/或操作级别使用属性。
如果您发现某个特定(web api)操作没有使用您在全局设置的路由,请发布代码(可能在另一个问题中),因为这听起来不像我期望的行为。
发布于 2021-11-13 09:16:22
Web API路由非常类似于MVC路由。在Web API路由中,我们可以在URL的开头找到"api/“,这使得它不同于MVC路由。在Web API路由中,"action“参数不是必需的,但它可以包含在路由的一部分中。
API路由:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);MVC路由:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Library", action = "Index", id = UrlParameter.Optional }
);https://stackoverflow.com/questions/42119466
复制相似问题