繁体   English   中英

使用ASP.NET限制API路由到控制器名称空间

[英]Restrict API route to controller namespace with ASP.NET

我发现了一个与标准asp.net控制器有关的类似问题,但是我已经尝试过了,它似乎无法与apicontroller一起使用。

限制到ASP.NET Core中的控制器名称空间的路由

我想允许将来不推荐使用API​​,而无需更改URL。 为了解决这个问题,我将在路由的开头放置一个版本前缀。 这样,我可以对端点添加一些修改,而不会破坏与此API的任何集成。

    config.Routes.MapHttpRoute(
        name: "V1 API",
        routeTemplate: "v1/{controller}/{action}/{id}",
        defaults: new { id = RouteParameter.Optional }

    );
    config.Routes.MapHttpRoute(
        name: "V2 API",
        routeTemplate: "v2/{controller}/{action}/{id}",
        defaults: new { id = RouteParameter.Optional }

    );

我想保持相同的控制器名称,并且在大多数情况下,所有内容都将完全相同,唯一的变化就是响应和请求正文。 我试图在controllers文件夹中添加一个子目录,以便将v1和v2添加到控制器的名称空间,但是我收到有关2个具有相同名称的控制器的错误。

我如何修改路由,使其指向控制器的v1名称空间,而不仅仅是在控制器内搜索任何类。 我不想将版本添加到控制器名称,因为我想使修订更新尽可能无缝。

我认为您可以通过向每个控制器添加路由前缀来解决此问题。

可以使用URL查询参数吗?

https://localhost:8000/{controller}/{action}/{id}?version=?

然后,您可以使用控制器内的控制流,根据版本确定要使用的逻辑。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM