2014-10-27 49 views
1

我想知道,做一個「REST的API」你需要滿足6個架構約束如下:使用HTTP進行REST API:可自動緩存?

http://en.wikipedia.org/wiki/Representational_state_transfer#Architectural_constraints

它是安全的狀態,當你創建了HTTP協議的REST API ,「可緩存」約束自動滿足?因爲HTTP已經通過HTTP標頭提供了一個「開箱即用」的緩存系統:http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html

因此不需要再擔心這個問題了嗎?

也許聽起來像一個愚蠢的問題,但我想確定。 :-)

親切的問候!

K.

回答

2

讓我擴大的挑戰位創建正確的高速緩存邏輯: 通常,API的後端是一個數據庫,其中包含各種小信息。 REST API中的典型表示可以是累積視圖(因此,比方說,用戶活動日誌,包含門戶內最後一個用戶操作的列表,以及沿着這些行的內容)。 現在,爲了瞭解您的API URL/user/123/activity是否發生了變化(在客戶端發送「If-modified-since」-header)時間戳之後,您將不得不檢查是否存在上次請求後的任何其他活動。這樣做的開銷可能與簡單地再次獲取結果相同。因此,在很多情況下,人們並沒有真正煩惱,這是一種恥辱,因爲適當的緩存可能會對Web App性能產生巨大影響。

也許這給了更多的細節, 揚

+0

我明白了,謝謝澄清! :-)網上有很多關於如何通過HTTP正確緩存資源以幫助我進一步實現的資料。 – Braek 2014-10-27 15:26:13

2

你是正確的,HTTP已經給你的工具來識別緩存的元素,但是你的API將通過一些服務器端邏輯生成,你仍然需要確保代碼「的背後「你的API將選擇正確的HTTP頭文件,並準備好並且能夠對理想世界中的」If-modified-since「請求做出反應。 創建一個可靠的「上次修改」時間戳以及可靠地反對它檢查實際上是安靜的壯舉;-)

希望這有助於一點, 揚

+0

謝謝! :-)你是什麼意思「相當壯舉」?這是否是一個挑戰? – Braek 2014-10-27 13:56:19

+0

挑戰在於時間流逝,網絡延遲以及外部因素都會對時間戳進行身份驗證。還有安全問題。 – 2017-03-03 18:51:55