2010-09-03 89 views
0

我需要持久化客戶端狀態,並且想知道這種方法會出現什麼樣的問題。簡單的JSON Web服務問題

我想爲使用HTTPS和基本身份驗證的客戶端提供一個URL,他們只需PUT並獲取包含JSON的文本Blob。在服務器端,當PUTting在存儲它之前查看其語義是否正確時,我可以解析它。

這是什麼問題?

回答

0

您確定要使用PUT而不是POST嗎?通常,PUT用於更新數據,POST用於添加新數據。

GET的一個問題是數據可以緩存在客戶端。

除此之外 - 我沒有看到任何陷阱。

+0

是的,你可以通過在請求結尾附加一個隨機數來避免潛在的緩存問題。即:http://www.whatever.com/service.xxx?cacheb=3918373717 – Jason 2010-09-03 19:22:29

+0

或通過指定適當的緩存標題。 – 2010-09-03 19:33:15

+0

我確定我想要PUT,因爲它是整個豬的替代品。 – 2010-09-03 19:33:39

2

是的,PUT也可以用於創建。與POST不同的是,您通常將數據發送到集合的URI,並且服務器確定最終創建的資源的URI(在「201創建」響應的'位置'標題中返回給您)。

但是,如果客戶端可以控制資源的URI,那麼您可以直接使用PUT直接訪問所需的資源URI,而不使用集合的URI。

另一種考慮它的方法是按照慣例,PUT必須是冪等的,而POST不是。這意味着PUT請求發送一次還是更頻繁沒有區別。結果是一樣的:第一次創建新實體時,任何額外的PUT只是更新實體,但是使用相同的數據,所以沒有什麼變化。

但是,如果您重新發送POST請求(到集合URI),那麼您實際上會在集合中創建多個 - 儘管是相同的條目。這也是您的網絡瀏覽器詢問您是否要重新提交表單(通常爲POST)的原因,因爲一次提交與多次提交完全不同。