2017-04-03 112 views
0

作出PUT請求創建一個新的(本地/遠程/虛擬)存儲庫時,Artifactory的的REST API將返回:Artifactory的:REST API糟糕的設計

  • 狀態200當創建成功
  • 狀態400與響應內容的關鍵字already exists如果資源已經存在

然而,執行日當E在用戶/組/權限相同的操作,反應在這兩種情況下201

  • 資源是否存在,或
  • 剛剛創建

迴應內容也相同!

這不是一個糟糕的api設計嗎?

回答

0

REST API之間有區別。

存儲庫創建被標記爲「Create Repository」用於PUT調用,更新存儲庫通過使用POST完成。

在用戶/組/權限的REST API,使用PUT,用於「創建或更換用戶」,你可以在JFrog Artifactory Wiki page for REST API看到。

因此,即使用戶存在於Artifactory中,您將獲得201作爲對REST API命令的回覆將「替換」現有用戶。

+0

是的,但不是不一致嗎?客戶應該知道安全資源是否已經存在?恕我直言api應該在所有資源CRUD操作中保持一種通用/統一的方法,並且具有一致的映射(例如'201' - >成功創建,'40x' - >已經存在等)。我也認爲'400'對應於'Bad Request',用於現有的資源庫資源,因爲它太泛化(可能因其他原因返回,導致'Bad Request')。 '403'或'409'似乎更合適。 – pkaramol