2017-09-28 30 views
1

我想了解更好地休息(可能不是唯一的:))REST如何處理這種互動?

因此,假設一個客戶端和服務器之間的交互這樣:

client send login to SO. 
client sends create SO thread with a question regarding REST architecture. 

有明顯的兩個操作之間的狀態。也就是說,你不能登錄之前發帖。

REST如何處理這個?

什麼讓我困惑的是,它說的是everywhere REST是假設是無狀態的:使用統一的和預定義的無國籍操作

那麼怎麼會在實踐中行得通呢?

P.S.

再舉一例:

client send question to SO 
client send comment to the question from op 1. 

有1和2,因爲你首先需要做就可以了評論之前,有一個問題之間的狀態。

+0

該服務可以返回可用於後續調用的結果。國家將由主叫方維護。 –

+0

這就是操作1和操作2之間的狀態。 –

回答

1

當他們說REST應該是無狀態的,這意味着api調用的結果應該不會因前面的api調用而有所不同。通過API調用保持狀態限制了緩存,因此不被視爲RESTful。

換句話說,您應該發送驗證令牌(或其他可能會更改響應的信息)與每個請求。

+0

所以我的問題仍然存在:如果在呼叫之間沒有狀態,第二個呼叫怎麼做?顯然,在登錄之前不能登錄。 –

+0

問題是,您不應該存儲特定於請求的用戶會話和信息。客戶端應該使用GET參數或請求頭來提供所有信息。 – hspandher

+1

你應該發送驗證令牌(或信息)與每個和非常請求。 – hspandher

0

無狀態意味着客戶端會話不會存儲在服務器端。 會話信息可以存儲在客戶端,因此不會依賴服務器,任何客戶端都可以調用服務器端的任何服務。所以無論客戶的狀態如何,都需要每次都通過。
在這裏你的服務器上的每個請求將是獨立的請求。