我會盡量保持這一點儘可能簡短和重點。在Ruby中使用REST API - 何時進行身份驗證?
我正在寫一個Ruby Gem,仿照Diplomat gem,這是一個圍繞產品的REST API的包裝。我正在使用的API使用基於令牌的身份驗證; API令牌通過POST發送,並且會話作爲cookie返回。我正在使用法拉第cookiejar中間件來處理由API返回的cookie。在概念上,我正在努力的問題是何時進行身份驗證。
我有兩個類,一個叫RestClient,一個叫Volume;後者繼承前者。現在,RestClient的init方法構建一個連接對象並進行身份驗證,而Volume的init方法調用super並傳遞路徑。我的想法是,當從RestClient繼承的任何類被初始化時,它將認證用戶。
class RestClient
def initialize(api_path)
<build connection>
auth
end
def auth
<post token, get session cookie>
end
end
class Volume < RestClient
def initialize
super('/volume')
end
def volumes
<send GET, receive volumes>
end
end
obj = Volume.new #Creates object, authenticates user
obj.volumes #Returns list of volumes
我想我的問題是..am我走向正確的軌道?我是否應該暫緩認證直到首次在對象上調用方法,而不是在初始化時進行認證?我是否完全錯誤地回答了這個問題?
一個memoized AUTH我很欣賞的反饋,我很容易得太多。在每次調用API調用的方法之前,我都進行了懶惰的身份驗證,隨後使測試變得更加容易。我將這個標記作爲一個簡單的事實的答案,指出在初始化過程中進行身份驗證是一種不好的模式,單憑這一建議是一個很大的幫助。 – Alayde