我有一個api類來聯繫郵件列表管理的REST api。它包括方法,如subscribe()
,unsubscribe()
,update()
等將重試功能添加到api調用的好方法?
在我的客戶端代碼,我行如
Api::subscribe($email, array(..));
因爲偶爾的失敗,我們要重試功能添加到每個呼叫。如果第一次通話失敗,我們希望在我們最終放棄之前重試一次或兩次。
直進的方式來做到這一點是
public static function subscribe($email, array $lists) {
$success = FALSE;
$retries = 3;
while (! success && retries > 0) {
// API call goes here
$retries--;
}
}
沖洗和重複每種方法。
爲了DRY(不要重複自己)的利益,我想知道是否有一個很好的,設計模式的方式來重寫我的調用,而不必重複每個方法的while循環。
如果不是,簡單的方法是最合適的,那很好。我只想看看有沒有更好的出路,我不知道。
有不同的方法來處理這個問題,但在我們的例子中,我們是在HTTP客戶端級別上完成的。非常簡單,因爲它是最瞭解協議的層。 – Evert