【问题标题】:How to deal with writing an API endpoint that requires some other API requests be made in advance?如何处理编写需要提前发出一些其他 API 请求的 API 端点?
【发布时间】:2022-01-17 16:10:27
【问题描述】:

我有一个用于添加注释的 API 端点,但是当从 GUI 使用此 API 时,可以保证在发出此请求之前已经发生了一些事情...例如,假设我正在添加注释的标签两者都在注释本身中,并且在特定于标签的单独集合中。所以当用户在 GUI 中添加/删除/更改标签的某些属性时,会一一发出请求,标签集合将独立受到影响,但是,如果用户发出 API 请求,他们可以(不经意间)绕过一个步骤非常容易,例如,在没有将其添加到标签集合之前的情况下,将标签添加到笔记中......。在编写服务时如何处理这样的场景?由于某些原因,此数据不能只保存在两个地方之一,两者都必须存在。

简而言之,资源有一些“依赖”资源,但是当在 GUI 中调整时,这些资源会与它保持同步,但是,提出这样的请求:

POST /api/resources HTTP/1.1
// body containing dependent resources...

可以让它们不同步。

我不确定 Web 服务设计的术语,因此标题可能难以理解,但这个问题确实是关于“当数据保存在数据库中的两个位置时,在更改其中一个位置时保持数据的完整性他们使用一个 API(另一个必须保持有意义的正确并与最新状态同步)。

【问题讨论】:

    标签: web-services api-design


    【解决方案1】:

    在这种情况下似乎至少可以做两件事:

    1. 在一个请求中执行这两项操作。我个人不喜欢这个,因为在我的情况下,这意味着对数据库的多次写入可能会很昂贵。
    2. 返回错误状态代码(4xx,可能是 409)。我喜欢这个,它也可以在给请求者的消息中完全清楚地说明他们在提出请求之前应该做什么。

    【讨论】:

      猜你喜欢
      • 2021-01-03
      • 2018-12-14
      • 2020-06-04
      • 2015-12-04
      • 1970-01-01
      • 1970-01-01
      • 2018-12-10
      • 2017-05-05
      • 1970-01-01
      相关资源
      最近更新 更多