【问题标题】:Web API routing to match namespaceWeb API 路由以匹配命名空间
【发布时间】:2019-07-15 16:33:03
【问题描述】:

我正在为我的工作地点创建一个供内部使用的 Web API。我之前没有创建过 Web API。

我想知道,是否可以将我的“WebApiConfig.cs”文件(我在其中处理我的默认路由)配置为默认为我的控制器的命名空间路由?

例如:

CalendarDatesController.cs

namespace SampleWebService.Controllers.CalendarServices {
public class MilestoneDatesController : ApiController  {
    public DateTime Get() {
        return new DateTime();
    }
}

}

WebApiConfig.cs(默认)

public static void Register(HttpConfiguration config)  {
        // Web API configuration and services

        // Web API routes
        config.MapHttpAttributeRoutes();

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

WebApiConfig.cs(建议)

public static void Register(HttpConfiguration config)  {
        // Web API configuration and services

        // Web API routes
        config.MapHttpAttributeRoutes();

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

在我的“提案”中,它会在路径中包含“CalendarServices”,但是,如果我创建另一个文件夹,我希望将另一个文件夹放在它的位置。我希望它默认为 - api/ControllersParentFolder/Controller/id

【问题讨论】:

  • @BlueEyedBehemoth 如果我可以标记你回答这个问题,我会的。非常感谢。那行得通。
  • 我会将其添加到答案中。很高兴我能帮上忙。我有同样的问题。

标签: c# asp.net-web-api-routing


【解决方案1】:

虽然本文基于版本控制,但您应该能够根据需要使用它。

https://devblogs.microsoft.com/aspnet/asp-net-web-api-using-namespaces-to-version-web-apis/

【讨论】:

    【解决方案2】:

    看看我在 Github 上的解决方案 (WebApiNamespaceRouting)。

    特点:

    • 不同命名空间中的相同控制器名称
    • 根据命名空间模式过滤路由中的控制器
    • 与招摇兼容

    【讨论】:

      猜你喜欢
      • 2014-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-05
      • 2017-11-05
      相关资源
      最近更新 更多