【问题标题】:Exception in idempotent PUT request?幂等PUT请求中的异常?
【发布时间】:2019-05-06 10:01:26
【问题描述】:

我在 Put 中实现幂等操作时遇到问题。

Put 请求更新了一个REST API 资源中的一个字段。

但是要实现幂等性,每个重复的请求都应该导致对象的状态相同。

我们使用database 如果发生错误会发生什么。现在这是否意味着Idempotency 丢失了?如果没有

现在按照相同的定义进行 - 如果我们在一个字段的休息 API 中有条件状态更改。例如)状态字段。

如果逻辑是只有父属性字段locked==false才更新状态字段,我们可以抛出异常说'BusinessLogic异常不能更新状态'

所以理论上我们有两个操作我们有类似的情况:

  1. 一个可能是幂等的,如果不是因为现实生活中的错误是不可能的 避免
  2. 一个不应该是幂等的,但我们可以让它相似

问题:

如何为 put 实现基于错误处理的幂等性?如果错误处理正常,这是否意味着即使业务逻辑也可以成为幂等Put

【问题讨论】:

    标签: rest exception put idempotent


    【解决方案1】:

    查看idempotent的相关定义可能会有所帮助

    我们使用数据库,如果发生错误会发生什么。现在这是否意味着幂等性丢失了?

    幂等性不会丢失。幂等不保证每个请求都会成功;仅表示由于服务器收到请求的多个副本而发生的任何loss of property都是服务器的故障。

    这是否意味着连业务逻辑都可以做成幂等Put?

    是的。您可以通过以下两种方式之一做到这一点:通过设计您的域应用程序协议,使请求本质上是幂等的;或使用conditional requests 描述请求打算更改的“之前”状态。

    【讨论】:

    • @VoiceOfReason 这是我需要知道的。感谢您的链接。您能否分享一些有关如何实现域应用程序协议的代码示例或链接?对我来说,这似乎是一个新名词。
    • 查看 Jim Webber 的演讲:youtube.com/watch?v=aQVSzMV8DWc
    猜你喜欢
    • 2018-05-31
    • 1970-01-01
    • 2015-08-25
    • 1970-01-01
    • 2012-10-18
    • 1970-01-01
    • 2019-07-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多