使用HTTP资源路径作为操作是否违反了REST标准?

时间:2017-10-16 21:40:30

标签: rest

我正在使用HTTP资源路径来执行后端操作,而不是提供资源。一个例子是在旅游网站上为假日套餐添加假日功能:

/holiday/Paris/feature/canal-trip

在此示例中,功能canal-trip将添加到我计划的Paris之旅中。在此action之后,可能会有重定向到主资源页面。

很明显,这不是严格的REST资源GET,但我想知道:

  • 这是多少违反REST的行为?
  • 这可能导致什么缺点? (如果搜索引擎未对操作路径编制索引。)
  • 提供访问者可以代表资源执行操作的路径的更好方法是什么?

对于这个问题,让我们说 CSRF不是问题 - 行动是无害的。我发现的最相似的问题是:REST actions and URL API design considerations - 但在我的情况下我无意使其成为真正的REST端点。只想避免违规行为。

1 个答案:

答案 0 :(得分:0)

  

这是多少违反REST的行为?

非常努力。 REST的一个重要部分是统一界面的概念 - 消费者和中介机构不需要知道任何特定资源的任何细节。这又取决于尊重交换消息语义的资源。

在HTTP的情况下,GET消息应该是safe;在2002, Fielding中提供了这个澄清。

  

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

  

这可能导致什么缺点? (如果搜索引擎未对操作路径编制索引。)

由于操作应该是安全的,因此允许任何使用者或中间组件推测性地获取资源。在您的情况下,这意味着在没有最终消费者行动的情况下将特征添加到旅行中。

  

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

使用其中一个 unsafe http方法(如POST)来获得所需的结果。