[英]Restrict API route to controller namespace with ASP.NET
我发现了一个与标准asp.net控制器有关的类似问题,但是我已经尝试过了,它似乎无法与apicontroller一起使用。
我想允许将来不推荐使用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.