2014-12-02 82 views
1

我有API的尊重版本在同一個域中,我想通過把版本號的網址,如下所示寧靜的API:實現版本處理

mydomain.com/api/v1/user/getall 
mydomain.com/api/v1/user/add 

mydomain.com/api/v2/user/getall 
mydomain.com/api/v2/user/add 

想象這種情況下對其進行管理:在這兩個版本 獲取用戶有相同的功能,但在V2中添加更改。 現在我想要實現版本控制,我發現了這個目標的兩種方法。在應用

  1. 使用V1和V2中的路由和管理版本(UE:SDammann WebApi Versioning
  2. 管理通過源控制器和網絡服務器版本(對於每個版本存在的分支和在ASP.net的情況下(IIS)爲每個版本的子應用程序)

在第一種方法,我認爲我們必須複製控制器S和行動,所以如果發現例如錯誤在得到用戶的行動,我們必須在這兩個動作(冗餘改變)

第二種方法如果發生了一些錯誤,我們必須簽出舊分支,修復它並通過新版本分支進行合併。

劑量存在管理和實施API版本控制的更好方法嗎?

+0

是的,在相同的WebAPI中使用URL路由將請求映射到正確的控制器版本。 – Chris 2014-12-02 10:42:13

+0

@Chris但是在這種方法中,如果發生應用程序的問題,所有版本都會失效!可以嗎? 我真的很困惑尋找最佳方法 – Behrooz 2014-12-02 10:44:37

+0

你還沒有指定任何DR要求。如果您正在尋找基於版本號的不同內容,那麼路由是最乾淨的方式。如果您正在研究災難恢復情況,那麼這是一個不同的問題。另外,爲每個版本保留單獨的分支意味着你將有兩個流來維護,這是不可取的。 – Chris 2014-12-02 10:48:17

回答

0

不同服務版本的分支可能導致部署夢魘,因爲您需要同時維護/測試/部署許多獨立的應用程序。所以,想一想單一的應用程序和適當的路由系統在它看起來對我來說更有希望。但是,你需要保證你沒有共享的代碼路徑,否則你可能會在一個版本中引入新的問題與另一個版本一起工作。怎麼樣複製?無論如何,如果您想在代碼級別分離您的版本以保證安全修改,我認爲它在某種程度上是不可避免的。有些專業人士甚至是think,您不需要在舊版本中執行錯誤修復:任何錯誤修復都會引入新的服務版本。