2017-03-16 80 views
1

所以這個問題有幾個部分。 的2個示例端點(在最簡單的形式):如何爲應用程序客戶端的.Net Web Api版本控制/路由?

user/{id}/profile 
movie/{id}/info 

我希望創建2個控制器(UserController中& MovieController)。

  1. 如何在控制器名稱之前實現視圖區域?

這兩個是什麼,我會考慮一個視圖。因此,我想在控制器之前追加一個「視圖」,因爲這兩個控制器只提供意見。我後來希望在不同的地方也有一個用戶控制器,不會返回意見。 但是,全部我的終點應以/api/開頭。

即我想要這個:

api/view/user/{id}/profile 
api/view/movie/{id}/info 

但在使用 「自定義路由」 我怎麼註冊的區域(/查看/)(即:httpConfiguration.MapHttpAttributeRoutes())?這個我找不到的任何例子?

  1. 我應該在哪裏進行版本控制?

客戶端是一個應用程序,並且需要的版本,這樣我們就可以更改該方法不會破壞應用程序的舊版本。

我們不確定最好放置版本的位置,以及放置位置如何影響新版本的開發(如果這樣做的話)?

可能性:

1. api/v1/view/user/{id}/profile 
2. api/view/v1/user/{id}/profile 
3. api/view/user/{id}/profile/v1 
  1. 版本整個API。這會將整個API升級到新版本,即使我們只需要一個方法/終端來進行應用程序更改。 有沒有任何優點,這我沒有看到?

  2. 版面積。同上,受影響的控制器略少。

  3. 版本的方法。看起來像最簡單的一樣,因爲只有單一改變的方法受到影響。但網址非常難看。

沒有人有在MVC或Web的API結構不整API升級版本的例子,但仍保持了又好結構在他們的網址嗎?

+0

爲什麼不使用[aspnet-api-versioning](https://github.com/Microsoft/aspnet-api-versioning)? – NightOwl888

回答

0

我最終按照NightOwl888的建議使用https://github.com/Microsoft/aspnet-api-versioning

1.

使我的2個控制器與該限定的routeprefix常量字段擴展另一個控制器,它們應該共享:

protected const string RoutePrefix = "api/view/v{version:apiVersion}"; 
... 
[RoutePrefix(RoutePrefix + "/user")] 

2.

/V1的放置/與本圖書館無關。並允許更新控制器或個人方法,如適合每個案例的基礎。

相關問題