我发现了一个与标准asp.net控制器有关的类似问题,但我已经尝试过了,它似乎并没有使用apicontroller。
Restrict route to controller namespace in ASP.NET Core
我想允许将来弃用API,而无需更改网址。为了解决这个问题,我将在路径的开头添加一个版本前缀。通过这种方式,我可以在不破坏与此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命名空间,而不是仅搜索控制器中的任何类。我不想将版本添加到控制器名称,因为我希望尽可能无缝地进行修订更新。
答案 0 :(得分:0)
我认为您可以通过向每个控制器添加路由前缀来解决此问题。
答案 1 :(得分:0)
您可以使用网址查询参数吗?
https://localhost:8000/{controller}/{action}/{id}?version=?
然后,您可以在控制器中使用控制流来根据版本确定要使用的逻辑。