簡體   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