REST定义——一旦系统提供了用户授权,它就不是RESTful系统了吗?
我开始读一些关于RESTful系统的书,并开始学习。它在第7-8页上说,RESTful系统有以下限制:REST定义——一旦系统提供了用户授权,它就不是RESTful系统了吗?,rest,Rest,我开始读一些关于RESTful系统的书,并开始学习。它在第7-8页上说,RESTful系统有以下限制: 它必须是客户机-服务器系统 它必须是无状态的,服务不需要保持用户会话;换句话说,每个请求都应该是 独立于其他RESTful架构 它必须支持缓存系统。网络基础设施应支持不同级别的缓存 它必须是统一可访问的,每个资源必须具有唯一的地址和有效的访问点 它必须分层,并且必须支持可伸缩性 它应该按需提供代码尽管这是一个可选约束,但应用程序可以在运行时通过允许 按需下载代码,例如Java小程序 现在有
- 它必须是客户机-服务器系统
- 它必须是无状态的,服务不需要保持用户会话;换句话说,每个请求都应该是 独立于其他RESTful架构
- 它必须支持缓存系统。网络基础设施应支持不同级别的缓存
- 它必须是统一可访问的,每个资源必须具有唯一的地址和有效的访问点
- 它必须分层,并且必须支持可伸缩性
- 它应该按需提供代码尽管这是一个可选约束,但应用程序可以在运行时通过允许 按需下载代码,例如Java小程序
然而,我无法想象每个RESTful系统都不支持任何安全标准,例如授权。我是否理解错误,或者任何支持授权的系统都不是RESTful系统。身份验证不需要有状态API
作为一个稻草人例子,考虑一个具有:
的应用程序。- 包含硬编码用户名和密码的配置文件
- 一种请求格式,包括每个请求中的用户名和密码
- 每当收到请求时运行的逻辑,并将请求与配置文件进行比较
重要的一点是,请求的行为应该仅取决于该请求。一个有状态的API会说“产品#1将意味着不同的东西,这取决于您提供的会话令牌”;或者“您必须在请求Y之前调用请求X,我们将使用会话令牌跟踪您是否已这样做”。在无状态API中,您会说“您必须提供一个有效的产品ID来请求Y,您如何获得它取决于您自己,但您可能会通过调用请求X来获得它。”Does,“产品#1的含义会有所不同,这取决于您提供的会话令牌“是否需要有状态?”?它需要分支逻辑;但是,一个无状态JWT代币的工作方式是否与前一段中的工作方式相同?@jaco0646否,因为同一用户的两个JWT代币应该是等效的,所以您不需要记住搜索产品时使用的代币来购买这些产品。也许认证和会话之间的区别应该更清楚。