【问题标题】:Does using an HTTP resource path as action violate REST standards?使用 HTTP 资源路径作为操作是否违反 REST 标准?
【发布时间】:2017-10-16 21:40:30
【问题描述】:

我正在使用 HTTP 资源路径来执行后端操作,而不是提供资源。例如,将假期功能添加到旅游网站上的假期套餐中:

/holiday/Paris/feature/canal-trip

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

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

  • 这在多大程度上违反了 REST?
  • 这会导致什么缺点? (如果操作路径未被搜索引擎索引。)
  • 有什么更好的方法可以让访问者代表资源执行操作?

对于这个问题,假设 CSRF 不是问题 - 操作是无害的。我发现的最相似的问题是:REST actions and URL API design considerations - 但是在我的情况下 我无意将其设为真正的 REST 端点。只想避免违规。

【问题讨论】:

  • 归根结底是要在您想要将此端点作为基于休息 api 的端点提供给您的产品的消费者,还是为了简化您的物流实现而实现它之间进行权衡产品。
  • 我们说后者——只是为了方便,绝对不会将真正的 REST 资源放在同一路径上。

标签: rest


【解决方案1】:

这在多大程度上违反了 REST?

相当难。 REST 的一个重要部分是统一接口的概念——消费者和中介不需要知道任何特定资源的任何细节。这又取决于尊重所交换消息语义的资源。

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

HTTP 并不试图要求 GET 的结果是安全的。它所做的是要求操作的语义是安全的,因此如果发生任何导致财产损失的事情(金钱,顺便说一句,为了这个定义,被认为是财产)。

.

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

因为操作应该是安全的,所以允许任何消费者或中间组件推测性地获取资源。在您的情况下,这意味着在最终消费者不采取行动的情况下将功能添加到旅行中。

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

使用其中一种不安全 http 方法(如 POST)来获得您想要的结果。

【讨论】:

    猜你喜欢
    • 2017-06-10
    • 2022-01-26
    • 2016-06-13
    • 2012-03-14
    • 2016-04-18
    • 2014-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多