2013-02-19 48 views
1

注意:我不在尋找域可用性webservice!現在,我們得到了出路......通過REST API進行域可用性檢查

我怎麼會建築師一個系統,都允許我們通過我們的REST API檢索我們的域名組合資源,也是相同的API在執行域可用性檢查?在這兩種情況下使用相同的URI是否是一個好主意,還是應該爲此使用不同的資源?

例如:

如果我想在example.com的信息(這是在我們的投資組合域)我想GET /domains/example.com/檢索就可以了我們的信息(如域名服務器,聯繫人等註冊信息......但還有我們的客戶記錄,發票號碼等內部信息)。

如果我想獲得example.org的域名可用性(這不是我們的註冊,所以不在我們的投資組合中),我也會打電話給GET /domains/example.org/,然後返回這個域名是否可用。

簡而言之:這是使用相同的URI,這兩個東西或者我應該使用此不同的資源(基本上都在一個域返回的信息?)一個好主意?例如/domainregistration/example.com/

回答

1

一個REST API的基本思想是提供實施細節和邏輯的抽象,你的情況,域名信息。在這個觀點下,抽象可能會適合,因爲您從您的投資組合中的域和不在您投資組合中的域中檢索域信息。

但也有在檢索領域的信息,例如檢索有關域中的域信息的一些差異不是在你的投資組合是緩慢的,或者至少比在你的投資組合域檢索信息慢。另一個區別是,對於REST API,通常會提供一些用於檢索多個資源信息的批量功能,如GET /domains/example.com,anotherexample.com,localhost.com/。在檢索不在您投資組合中的域的信息時,您可能不希望此類功能可用。

另一個原因則可能分裂的資源,你可以實現一個檢索有關你的投資組合領域的所有信息的呼叫:

GET /domains/ 

這個請求可能明顯只在你的投資組合返回有關域的信息,所以在這種情況下,你的抽象會被打破。

當你建模你的REST API來獲取域名可用性我會建議使用資源像

PUT /availabilities/example.com 

創建一個域可用性檢查。這種資源可以創建一個子資源example.com可再用於檢索該可用性檢查的信息,或通過使用緩存域名可用性檢查結果:

GET /availabilities/example.com 

把所有這些論點在一起我會贊成分裂的資源,這是因爲:

  • 如果一個API的用戶有興趣在你的投資組合域的詳細域名信息的API用戶可以檢查/domains資源
  • 要獲取信息,如果一個域名是在你的投資組合,用戶也將使用Ť他/domains/example.com資源
  • 只對域可用性檢查感興趣的API用戶可以使用availabilities資源執行此檢查。
+0

非常好的和明確的答案,但我只有一個問題,爲什麼你需要先做一個PUT請求來創建資源,如果一個GET請求做了我需要的所有事情,無論事先做了一個PUT請求? – ChrisR 2013-02-21 08:54:06

+0

PUT請求只是對異步請求進行建模的可能性,您可以PUT/POST發出一個域可用性請求,該請求會創建可在請求完成時查詢的資源。如果你只是返回一個同步可用性結果,GET將會很好地工作 – saintedlama 2013-02-21 09:55:50