2012-01-03 46 views
0

REST客户端通常每次都会发送一个身份验证参数,这种身份验证参数在某种程度上像浏览器中的PHP会话ID Cookie那样起作用。但是REST客户端是没有浏览器,所以我虽然在我的服务器端代码为什么不能我采取的验证参数和使用使用Sessions实现REST API是否很好?

session_id($_GET('authentication_code')); 

是它做的好办法?

+0

我认为你至少应该验证并处理内容 – 2012-01-03 10:47:46

+4

以任何方式使用PHP会话都不符合“无状态”[约束](http://en.wikipedia.org/wiki/Representational_state_transfer#Constraints)的REST,所以我会说这个简短答案是“不”。 – DaveRandom 2012-01-03 10:48:45

+0

看看“幂等”是什么意思。应该用这个词来描述REST服务。 – duffymo 2012-01-03 10:50:01

回答

3

答案是否定的。 S REST适用于stateless,这意味着您无法在服务器上存储任何内容。

+12

REST代表具有代表性的状态转移,所以S代表状态,而不是无状态,所以答案是否定的,但不是因为你说的原因。 – 2012-01-04 11:33:34

+0

@StuartGrimshaw是的,但是你每次都会转移状态,所以虽然S并不意味着“无状态”,但它代表了它。你当然非常正确。 – 2012-01-04 11:35:35

+0

@TomvanderWoerdt S对于'无国籍'是非常具有误导性的。我想像初级开发者阅读这个答案,在会面或采访中散布这个“小废话”。我理解你的想法,但不要这样做;) – ducin 2016-12-27 10:09:19

5

REST代表Representation State Transfer,并在它的最纯粹的形式归结为6 constraints,其中一个是客户端 - 服务器通信必须是无状态的,它必须包含完成请求所需的所有信息,没有客户端的状态必须被存储在服务器上。

然而,服务器可能是有状态的,这就是为什么您可以在服务器上存储客户端的认证码,但是由客户端自己来为每个请求传递该代码,服务器不能使用会话来存储认证码。

相关问题