首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Asp.Net核心- MVC与WebAPI路由差异

Asp.Net核心- MVC与WebAPI路由差异
EN

Stack Overflow用户
提问于 2017-02-09 01:11:17
回答 2查看 4.6K关注 0票数 4

这个问题可能会在较早的时候提出,因此可以重复。

当我们配置ASP.NET核心应用(MVC)时,我们在Startup.cs - configure - app.useMvc()下定义和映射路由。这个很好用。然而,当WebAPI出现的时候,为什么我们需要专门指定[Route("api/[controller]")呢?换句话说,webAPI只适用于属性路由?

为什么Configure方法不能处理此路由配置?这在早期的MVC/WebAPI (不是核心)中是一个很好的选择。

我错过了什么吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-09 21:41:55

在ASP.NET Core MVC中,MVC和Web之间没有区别(就像在MVC5/WebAPI2中一样)。无论请求是返回视图还是另一种类型的ActionResult,路由都应该以相同的方式工作。也就是说,属性路由是ASP.NET核心MVC中的默认约定,因为它使路由逻辑更接近将响应路由的代码。您仍然可以在Startup.Configure中设置全局路由(如您所见),但传统的推荐方法是在控制器和/或操作级别使用属性。

如果您发现某个特定(web api)操作没有使用您在全局设置的路由,请发布代码(可能在另一个问题中),因为这听起来不像我期望的行为。

票数 4
EN

Stack Overflow用户

发布于 2021-11-13 09:16:22

Web API路由非常类似于MVC路由。在Web API路由中,我们可以在URL的开头找到"api/“,这使得它不同于MVC路由。在Web API路由中,"action“参数不是必需的,但它可以包含在路由的一部分中。

API路由:

代码语言:javascript
复制
config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );

MVC路由:

代码语言:javascript
复制
 routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Library", action = "Index", id = UrlParameter.Optional }
        );
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42119466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档