【问题标题】:Would you violate the idempotency principle of REST for the sake of performance?你会为了性能而违反 REST 的幂等性原则吗?
【发布时间】:2015-01-22 10:31:09
【问题描述】:

我正在为电信行业开发一个低延迟应用程序,其中主要工作流程触发了如下计算:

  1. 调用 REST API(POST /workflow +payload)
  2. REST Web 应用将在快速访问缓存存储中执行高度并行化的处理
  3. 其余调用将返回响应(可能是 4 或 5 个字段的 JSON 对象)

现在,我最初的想法是遵循 REST 设计原则,是做 2 个 REST API 调用,一个 POSTS 触发处理,然后返回一个 201,并在标头中包含处理结果的位置(因为我的理解是 REST调用可以更改或返回资源,但不能同时返回),然后自动重定向到 GET 调用。

现在请记住,我正在尝试尽可能减少延迟,而 HTTP 重定向显然会增加延迟。如果我让我的 POST 返回有效负载而不是重定向到 GET 可以吗?有什么影响?

干杯,

【问题讨论】:

    标签: performance rest http architecture restful-architecture


    【解决方案1】:

    首先,POST 不是一种幂等方法,因此 POST 不可能不“违反幂等性”。

    其次,POST 没有理由不返回新创建资源的表示。事实上,根据 RFC7231(RFC2616 的新替代品之一),它甚至可以被缓存以供后续的GETS使用。请参阅第 4.3.3 节:

    对于源服务器希望客户端能够缓存的情况 POST 的结果可以被以后的 GET 使用, 源服务器可以发送一个 200(OK)响应,其中包含结果和一个 Content-Location 头域...

    【讨论】:

      猜你喜欢
      • 2023-03-22
      • 1970-01-01
      • 2017-05-01
      • 2018-11-12
      • 1970-01-01
      • 2018-04-24
      • 1970-01-01
      • 1970-01-01
      • 2011-09-17
      相关资源
      最近更新 更多