代码之家  ›  专栏  ›  技术社区  ›  murrekatt

替换REST API中的不可变资源

  •  0
  • murrekatt  · 技术社区  · 7 年前

    POST /cars
    POST /cars/:id
    

    汽车有一个 ID 服务器创建时生成的字段。

    我想听听大家对这件事的看法以及如何去做。

    当然,一个有点黑客式的解决方案是保持汽车不变,ID就是所谓的“修订”句柄。更新会导致一辆具有不同ID的新车。当然,用ID调用API并获取另一个ID有些奇怪。

    想法和建议?谢谢

    更新

    好的,在看了关于修改的建议以及StackExchange如何使用这些修改来修改问答之后,我想知道如何实际处理这些问题 cars revisions 关于哪个对象具有哪些字段以及如何查找,例如,由识别的特定汽车的最新版本 .

    例如,汽车具有:

    car:
      id: 1
      brand: Toyota
      model: Yaris
      price: 1000
    

    revision:
      car_id: 1
      revision: 1
      price: 900
    

    比如说,我想买一辆ID为1的最新汽车,它应该给我一辆丰田雅丽,现在的价格是900美元,而不是1000美元。这些是现在数据库中的预期值吗,即两行和最新版本(如果找到)覆盖了另一行?这是怎么回事?

    好的,所以修订只是为了跟踪历史,最新的信息在 汽车 条目本身。一、 e.更新时,除了更新cars条目外,还使用以前的值创建新版本。两者均在交易中完成。

    1 回复  |  直到 7 年前
        1
  •  1
  •   cassiomolin    7 年前

    为什么不以与堆栈交换API类似的方式处理它?

    GET /posts/{ids}/revisions
    

    还有一个仅用于检索修订的端点:

    GET /revisions/{ids}
    

    文档:


    除了a 静态映射 例如 /revisions/1 /revisions/2 ,您的API可以提供指向当前/最新版本的URI,例如 /revisions/current /revisions/latest .

    资源可以具有 mapping whose value changes over time