0

我已经实现了一个带有矢量 id 的 Rest API:

http://example.com/api/user/1
http://example.com/api/user/2
http://example.com/api/user/1,3
http://example.com/api/user/1,2,3

Rest 指示如果“user/2”不存在则返回 404。

忽略涉及查询参数的可能解决方案,以下情况的适当响应是什么?

user/1,2 - user/1 存在且 user/2 存在
响应是 200,两个元素都返回一个集合

user/1,3 - user/1 存在并且 user/3 不存在
1?响应是 200,用户 1 在一个集合中?
2?响应是 404,因为 user/3 无法返回?

既然我们可能用 1 来处理空集?上面,这是否意味着
user/3 - user/3 不存在
1?响应是 200 与一个空集?

4

1 回答 1

0

确保单个 ID 和多个 ID(矢量 ID)的响应格式相同。它是 REST 原则之一:GET 是一种“安全方法”(nullipotent),应该不会产生副作用。

对于在请求中支持矢量 ID 的端点,GET我通常使用类似于OpenSearch的响应格式,即

GET user/1,3其中 user/1 存在且 user/3 不存在返回 200

{
  "startIndex": 0,
  "count": 1,
  "itemsPerPage": 1,
  "entry": [
    { /* user/1 */}
  ]
}

GET user/3其中 user/3 不存在返回 200

{
  "startIndex": 0,
  "count": 0,
  "itemsPerPage": 0,
  "entry": []
}
于 2013-10-09T12:12:06.270 回答