gpt4 book ai didi

rest - 以 RESTful 方式处理有序列表

转载 作者:行者123 更新时间:2023-12-01 21:15:15 24 4
gpt4 key购买 nike

我怀疑在 RESTful API 中处理有序列表的最佳方法是什么。想象一下下面的例子:让我们创建一个 LP 的图表列表,您要在其中添加新的 LP,删除那些尚未进入 TOP10 的 LP,并更改它们的位置。您将如何在 RESTful JSON-API 中实现这些方法?

我想到了以下方法:

  • 获取/返回有序图表列表,如 [{ "name": "1st-place LP", "link": "/uid123" }, { "name": "2nd-place LP", "link": "/uid987" }, ...]
  • 获取/{uid} 通过其唯一 ID 返回一个 LP,返回 sth。喜欢 {"name": "1st-place LP", "ranking": 1 }
  • 获取/排名/{位置} 访问例如当前排名第一的 LP,返回 303 See Other带有像 Location: /uid123 这样的位置 header
  • 发布/带有请求正文 { "name": "my first LP title" }创建一个新的 LP 而不指定其当前图表位置

  • 现在的问题是我们如何改变当前的图表位置?可以简单地 放置/{uid} 更新 ranking属性,但我认为是 PUT/排名/{位置} 会更自然。另一方面,对将返回 303 See Other 的 URI 进行 PUT 是没有意义的。使用 GET 时。

    您认为解决此类图表列表的最佳方法是什么?我不喜欢简单地更改 ranking 的解决方案LP 数据集中的属性,因为这可能会以无意义的状态结束,例如具有相同排名的两个 LP 等等。

    最佳答案

    我看到两个问题。 1. 设计 API 的最 RESTful(漂亮)的方式是什么? 2. 如何确保两个LP的排名不一样?

    1:
    您的 LP 可能具有多个相互关联的属性,例如不同图表上的不同排名。我会说你希望排名从你的 LP 资源中移出。将某个列表上的排名作为单独的资源保留。例子:

  • GET/LPuid 只返回关于 LP 的属性,而不是相对属性,如排名
  • GET/billboard/3 将 URI 返回到在公告牌列表中排名第 3 的 LP。
  • PUT/billboard 获取 100 个 LP URI 的文档。
  • PUT/billboard/3 在该排名中插入一个 LP URI,并将其他排名下移。

  • 2:这与休息无关,无论你如何设计你的 API,你都会遇到这个问题。交易是一种解决方案。

    关于rest - 以 RESTful 方式处理有序列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9844880/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com