【问题标题】:Generic route for Web Api controllerWeb Api 控制器的通用路由
【发布时间】:2020-01-04 08:54:40
【问题描述】:

如果请求是这样的

mydomain.com/api/C1

那么我希望控制器 C1Api 来处理。

我试过如下路线

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

并输入 url 为

mydomain.com/api/C1

但这不起作用。

我是否需要为每个 api 控制器创建路由,或者我可以以通用方式处理它?

简而言之,我不想在 url 中的控制器之后使用 Api

【问题讨论】:

    标签: asp.net-mvc asp.net-web-api asp.net-web-api2 asp.net-mvc-routing


    【解决方案1】:

    由于使用基于约定的路由,控制器的命名很重要。

    更改 C1Api 控制器以遵循框架命名约定

    public class C1Controller : ApiController {
        //...
    }
    

    它现在应该匹配默认模板

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

    对于网址

    mydomain.com/api/C1
    

    参考Routing in ASP.NET Web API

    【讨论】:

    • 我认为您误解了这个问题。如果没有其他同名控制器,这将是我的第一个选择。基本上我想在我的 MVC 应用程序中添加 Web API,并且我已经有控制器。我将 Api 附加到 web api 控制器名称以区分它们
    • 您应该仍然可以执行 Nkosi 的建议。因为您将创建一个名为 API 的文件夹并将 API 控制器放入其中。
    猜你喜欢
    • 2015-05-04
    • 1970-01-01
    • 2017-04-15
    • 2020-04-08
    • 1970-01-01
    • 1970-01-01
    • 2016-07-12
    • 1970-01-01
    • 2016-09-07
    相关资源
    最近更新 更多