我怀疑如何在RESTful API中处理有序列表是最佳方法。想象以下示例:让我们创建一个LP的图表列表,您想要添加新的LP,删除尚未进入前10名的LP,并更改它们的位置。您将如何在RESTful JSON-API中实现这些方法?
我想到了以下方法:
- GET / 返回有序的图表列表,如 [{ "name": "第一名LP", "link": "/uid123" }, { "name": "第二名LP", "link": "/uid987" }, ...] - GET /{uid} 通过其唯一ID返回LP,返回类似于{"name": "第一名LP", "ranking": 1 }的内容。 - GET /ranking/{position} 访问例如当前排名第一的LP,返回303 See Other和Location-header如Location: /uid123 - POST / 使用请求体 { "name": "我的第一张LP标题" } 创建新的LP,而不指定其当前图表位置。
现在问题是我们如何更改当前的图表位置?可以简单地PUT / {uid} 来更新排名属性,但我认为PUT / ranking / {position} 更自然。另一方面,对使用GET时将返回303 See Other的URI进行PUT是没有意义的。
你认为什么是解决此图表列表问题的最佳方法?我不喜欢仅更改LP数据集中的排名属性的解决方案,因为这可能会导致两个具有相同排名等无意义状态。
我想到了以下方法:
- GET / 返回有序的图表列表,如 [{ "name": "第一名LP", "link": "/uid123" }, { "name": "第二名LP", "link": "/uid987" }, ...] - GET /{uid} 通过其唯一ID返回LP,返回类似于{"name": "第一名LP", "ranking": 1 }的内容。 - GET /ranking/{position} 访问例如当前排名第一的LP,返回303 See Other和Location-header如Location: /uid123 - POST / 使用请求体 { "name": "我的第一张LP标题" } 创建新的LP,而不指定其当前图表位置。
现在问题是我们如何更改当前的图表位置?可以简单地PUT / {uid} 来更新排名属性,但我认为PUT / ranking / {position} 更自然。另一方面,对使用GET时将返回303 See Other的URI进行PUT是没有意义的。
你认为什么是解决此图表列表问题的最佳方法?我不喜欢仅更改LP数据集中的排名属性的解决方案,因为这可能会导致两个具有相同排名等无意义状态。