可以更改系统状态的RESTful GET吗?

问题描述 投票:0回答:1

我正在构建一项服务,该服务可缓存短期数据对象。对象创建过程非常昂贵,因此该服务将缓存它们,其他下游应用程序可以使用它们而无需管理其生命周期。

[计划是下游应用程序将对此服务进行GET调用以获取对象。如果对象已过期,则服务将获取一个新对象,对其进行缓存,然后将其返回给调用方。

这是我的两难选择-GET操作通过获取新对象来更改系统状态。我确定我在这里违反了REST原则,还是有正当的理由?我应该将方法更改为POST吗?

rest
1个回答
0
投票

这样,GET操作通过获取新对象来更改系统状态。我确定我在这里违反了REST原则,还是有正当的理由?我应该将方法更改为POST吗?

简短的版本:很好。

更长的版本:REST表示我们的资源具有通用的“统一”语义-消息的含义不取决于您引用的资源。

对于HTTP,请求的主要标识符是方法。对于GET方法,语义(当前)由RFC 7231描述。GET被明确标识为safe

如果请求方法的定义语义本质上是只读的,则将其视为“安全”;即,由于对目标资源应用安全方法,客户端不会请求也不会期望原始服务器上的任何状态更改。

如果您是服务器,则需要更改一堆私有信息存储以计算资源的当前表示形式,这是隐藏在HTTP门面后面的实现细节。您可以做自己喜欢的事。

根本上,什么安全性[[手段是,任何知道标识符的人都可以随时请求资源的当前表示形式。这使浏览器可以在网络不稳定时重试请求,或者让蜘蛛在知道索引的请求无害的情况下爬行到索引网络(或更准确地说,将那些请求造成的任何危害的错误适当地分配给了服务器) )。

如果可以,那么GET是用于这些请求的完美“ RESTful”方法。
© www.soinside.com 2019 - 2024. All rights reserved.