2017-10-16 54 views
0

我正在使用HTTP资源路径执行后端操作,而不是提供资源。一个例子是增加一个假日功能假日包上一个旅游网站:使用HTTP资源路径作为违反REST标准的操作?

/holiday/Paris/feature/canal-trip

在这个例子中,功能canal-trip将被添加到我的计划前往Paris。在action之后,可能会有重定向到主资源页面。

很显然,这不是严格意义上的REST资源获取,但我想知道:

  • 多少,这是一个REST违规?
  • 这可能导致什么缺点? (如果操作路径没有被搜索引擎索引。)
  • 什么是更好的方式来提供,游客可以代表资源的执行动作的路径?

对于这个问题我们可以说CSRF不是一个问题 - 行动是无害的。我找到的最类似的问题是:REST actions and URL API design considerations - 但在我的情况下,我不打算使它成为一个真正的REST端点。只想避免违规行为。

+0

它可以归结为在您是否希望将此端点作为您的产品的消费者提供的基于休息api的端点之间进行权衡,或者仅仅是为了简化实现您的产品物流而实现它。 – MohitC

+0

让我们说后一个 - 只是为了方便起见,绝对不是在同一条路径上放置一个真正的REST资源。 – itarato

回答

0

多少,这是一个REST违规?

相当困难。 REST的一个重要组成部分是统一接口的概念 - 消费者和中间商不需要知道关于任何特定资源的任何细节的想法。这反过来取决于一个资源尊重被交换的消息的语义。

在HTTP的情况下,一个GET消息被认为是safe;在2002, Fielding提供了这个澄清。

HTTP不会试图要求GET的结果是安全的。它所要做的是要求操作的语义是安全的,因此它是实现的错误,而不是接口或接口的用户,如果发生任何事情导致财产损失(金钱,BTW,为了这个定义被认为是财产)。

这可能会导致什么缺点? (如果操作路径没有被搜索引擎索引。)

因为手术被认为是安全的,任何消费者或中介组件允许推测获取资源。在你的情况下,这将意味着功能被添加到旅行,而不被最终消费者采取行动。

什么是更好的方式来提供访问者可以代表资源执行操作的路径?

使用其中一个不安全的 http方法(如POST)来实现您想要的结果。