我正在使用HTTP资源路径来执行后端操作,而不是提供资源。一个例子是在旅游网站上为假日套餐添加假日功能:
/holiday/Paris/feature/canal-trip
在此示例中,功能canal-trip
将添加到我计划的Paris
之旅中。在此action
之后,可能会有重定向到主资源页面。
很明显,这不是严格的REST资源GET,但我想知道:
对于这个问题,让我们说 CSRF不是问题 - 行动是无害的。我发现的最相似的问题是:REST actions and URL API design considerations - 但在我的情况下我无意使其成为真正的REST端点。只想避免违规行为。
答案 0 :(得分:0)
这是多少违反REST的行为?
非常努力。 REST的一个重要部分是统一界面的概念 - 消费者和中介机构不需要知道任何特定资源的任何细节。这又取决于尊重交换消息语义的资源。
在HTTP的情况下,GET消息应该是safe;在2002, Fielding中提供了这个澄清。
HTTP不会尝试要求GET的结果是安全的。它的作用是要求操作的语义是安全的,因此它是实现的错误,而不是接口或接口的用户,如果发生任何导致财产损失的结果(金钱,BTW,为了这个定义,它被认为是财产。)
这可能导致什么缺点? (如果搜索引擎未对操作路径编制索引。)
由于操作应该是安全的,因此允许任何使用者或中间组件推测性地获取资源。在您的情况下,这意味着在没有最终消费者行动的情况下将特征添加到旅行中。
提供访问者可以代表资源执行操作的路径的更好方法是什么?
使用其中一个 unsafe http方法(如POST)来获得所需的结果。