2017-09-28 29 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

无状态意味着客户端会话不会存储在服务器端。 会话信息可以存储在客户端,因此不会依赖服务器,任何客户端都可以调用服务器端的任何服务。所以无论客户的状态如何,都需要每次都通过。
在这里你的服务器上的每个请求将是独立的请求。