[英]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.